Aspire 13.1 新特性与 MCP 工具

This commit is contained in:
hello 2025-12-18 22:41:57 +08:00
parent b11ba4f6a5
commit 54a2f5275d
7 changed files with 47 additions and 16 deletions

3
.aspire/settings.json Normal file
View File

@ -0,0 +1,3 @@
{
"appHostPath": "../src/HelloShop.AppHost/HelloShop.AppHost.csproj"
}

View File

@ -4,14 +4,14 @@
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Aspire.Hosting.Maui" Version="13.0.2-preview.1.25603.5" />
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="13.0.2" />
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="13.0.2" />
<PackageVersion Include="Aspire.Hosting.Redis" Version="13.0.2" />
<PackageVersion Include="Aspire.Hosting.Testing" Version="13.0.2" />
<PackageVersion Include="Aspire.Npgsql.EntityFrameworkCore.PostgreSQL" Version="13.0.2" />
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="13.0.2" />
<PackageVersion Include="Aspire.StackExchange.Redis.DistributedCaching" Version="13.0.2" />
<PackageVersion Include="Aspire.Hosting.Maui" Version="13.1.0-preview.1.25616.3" />
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="13.1.0" />
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="13.1.0" />
<PackageVersion Include="Aspire.Hosting.Redis" Version="13.1.0" />
<PackageVersion Include="Aspire.Hosting.Testing" Version="13.1.0" />
<PackageVersion Include="Aspire.Npgsql.EntityFrameworkCore.PostgreSQL" Version="13.1.0" />
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="13.1.0" />
<PackageVersion Include="Aspire.StackExchange.Redis.DistributedCaching" Version="13.1.0" />
<PackageVersion Include="AutoMapper" Version="16.0.0" />
<PackageVersion Include="Blazored.FluentValidation" Version="2.2.0" />
<PackageVersion Include="CommunityToolkit.Aspire.Hosting.Dapr" Version="13.0.1-beta.468" />

View File

@ -20,9 +20,12 @@ public class OpenApiConfigureOptions(IConfiguredServiceEndPointResolver serviceR
UriBuilder uriBuilder = new(endPoint) { Path = "/openapi/v1.json" };
try
{
{
HttpRequestMessage request = new(HttpMethod.Get, uriBuilder.Uri) { Version = new Version(2, 0) };
HttpResponseMessage response = httpClient.SendAsync(request).GetAwaiter().GetResult();
using CancellationTokenSource cts = new(TimeSpan.FromSeconds(5));
HttpResponseMessage response = httpClient.SendAsync(request, cts.Token).GetAwaiter().GetResult();
if (response.IsSuccessStatusCode)
{
urlDescriptors.Add(new UrlDescriptor
@ -32,18 +35,35 @@ public class OpenApiConfigureOptions(IConfiguredServiceEndPointResolver serviceR
});
break;
}
else
{
if (logger.IsEnabled(LogLevel.Warning))
{
logger.LogWarning("Failed to get swagger endpoint for {ServiceName} at {Endpoint}, Status: {StatusCode}",
serviceEndpoint.ServiceName, uriBuilder.Uri, response.StatusCode);
}
}
}
catch (OperationCanceledException)
{
if (logger.IsEnabled(LogLevel.Warning))
{
logger.LogWarning("Timeout getting swagger endpoint for {ServiceName} at {Endpoint}",
serviceEndpoint.ServiceName, uriBuilder.Uri);
}
}
catch (Exception ex)
{
if (logger.IsEnabled(LogLevel.Error))
if (logger.IsEnabled(LogLevel.Warning))
{
logger.LogError(ex, "Failed to get swagger endpoint for {ServiceName}", serviceEndpoint.ServiceName);
logger.LogWarning(ex, "Failed to get swagger endpoint for {ServiceName} at {Endpoint}",
serviceEndpoint.ServiceName, uriBuilder.Uri);
}
}
}
}
options.ConfigObject.Urls = urlDescriptors;
options.ConfigObject.Urls = urlDescriptors;
options.SwaggerEndpoint("/openapi/v1.json", "apiservice");
}
}

View File

@ -25,6 +25,12 @@ builder.Services.AddReverseProxy()
builder.Services.AddSingleton<IConfiguredServiceEndPointResolver, ConfiguredServiceEndPointResolver>();
builder.Services.AddSingleton<IReverseProxyConfigProvider, CustomReverseProxyConfigProvider>();
builder.Services.AddHttpClient<OpenApiConfigureOptions>(client =>
{
client.Timeout = TimeSpan.FromSeconds(30);
});
builder.Services.AddTransient<IConfigureOptions<SwaggerUIOptions>, OpenApiConfigureOptions>();
builder.Services.AddTransient<IPermissionService, PermissionService>();

View File

@ -10,5 +10,7 @@ spec:
value: "localhost:6379"
- name: redisPassword
value: "guest"
- name: enableTLS
value: "true"
auth:
secretStore: env-secretstore

View File

@ -1,4 +1,4 @@
<Project Sdk="Aspire.AppHost.Sdk/13.0.2">
<Project Sdk="Aspire.AppHost.Sdk/13.1.0">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>

View File

@ -62,8 +62,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Maui.Controls" Version="10.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="10.0.11" />
<PackageReference Include="Microsoft.Maui.Controls" Version="10.0.20" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="10.0.20" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.1" />
</ItemGroup>