Aspire, Hosting, RazorPage, Project, DeepSeek
Project
--------------------------------------------------------------------
F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.sln
F:\Projects\VS\AspireRazorChartSln\AspireRazorChart01\AspireRazorChart01.csproj
F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.AppHost\
F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.ServiceDefaults\AspireRazorChartSln.ServiceDefaults.csproj
-----------------------------------------------------------------------
Вот правильная конфигурация для .NET Aspire в вашем проекте Razor Pages:
using ChartDirLib031;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Diagnostics.HealthChecks;
namespace AspireRazorChart01
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Добавляем сервисы .NET Aspire
builder.AddServiceDefaults();
// Health Checks
builder.Services.AddHealthChecks()
.AddCheck("AspireRazorChart01", () => HealthCheckResult.Healthy());
// Singletons/apps
builder.Services.AddSingleton<ChartContainer>(sp =>
{
var container = new ChartContainer(80);
for (int i = 0; i < 15; i++)
{
container.AddChart(new Chart(80));
}
return container;
});
// Razor Pages support
builder.Services.AddRazorPages();
var app = builder.Build();
// Используем стандартные middleware .NET Aspire
app.MapDefaultEndpoints();
// Standard pipeline
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
}
}
}Ключевые изменения:
Удалены неиспользуемые using - убраны закомментированные пространства имен Aspire
Добавлен
builder.AddServiceDefaults()- этот метод автоматически настраивает:Metrics (метрики)
Tracing (трассировку)
Logging (структурированное логирование)
Health checks endpoint
Добавлен
app.MapDefaultEndpoints()- этот метод автоматически маппит:Health checks на
/healthMetrics на
/metrics
Добавлен
app.UseStaticFiles()- необходим для обслуживания статических файловУпрощен
app.MapRazorPages()- убрана цепочка.WithStaticAssets()
Также убедитесь, что в вашем .csproj файле добавлены ссылки на пакеты Aspire:
<PackageReference Include="Aspire.Hosting" Version="9.5.0" />
<PackageReference Include="Aspire.Microsoft.AspNetCore" Version="9.5.0" />-----------------------------------------------------------------------------------------------------F:\Projects\VS\AspireRazorChartSln\AspireRazorChart01\AspireRazorChart01.csproj<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>e085294f-2f32-460f-8409-499b4f325ca4</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Aspire.Hosting" Version="9.5.2" />
<PackageReference Include="ChartDirector.Net" Version="7.1.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.10" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.22.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AspireRazorChartSln.ServiceDefaults\AspireRazorChartSln.ServiceDefaults.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="ChartDirLib031">
<HintPath>..\..\RazorChartDirFinanceSln\ChartDirLib031\bin\Debug\net9.0\ChartDirLib031.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.AppHost\AspireRazorChartSln.AppHost.csproj

