среда, 29 октября 2025 г.

Aspire, Hosting, RazorPage, Project, DeepSeek

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:

csharp
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();
        }
    }
}

Ключевые изменения:

  1. Удалены неиспользуемые using - убраны закомментированные пространства имен Aspire

  2. Добавлен builder.AddServiceDefaults() - этот метод автоматически настраивает:

    • Metrics (метрики)

    • Tracing (трассировку)

    • Logging (структурированное логирование)

    • Health checks endpoint

  3. Добавлен app.MapDefaultEndpoints() - этот метод автоматически маппит:

    • Health checks на /health

    • Metrics на /metrics

  4. Добавлен app.UseStaticFiles() - необходим для обслуживания статических файлов

  5. Упрощен app.MapRazorPages() - убрана цепочка .WithStaticAssets()

Также убедитесь, что в вашем .csproj файле добавлены ссылки на пакеты Aspire:

xml
<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
-------------------------------------------------
<Project Sdk="Microsoft.NET.Sdk">

  <Sdk Name="Aspire.AppHost.Sdk" Version="9.5.0" />

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <UserSecretsId>b0f1135e-9702-469a-af43-57c50e304d12</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Aspire.Hosting.AppHost" Version="9.5.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\AspireRazorChart01\AspireRazorChart01.csproj" />
  </ItemGroup>

</Project>
-----------------------------------------------------
F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.ServiceDefaults\AspireRazorChartSln.ServiceDefaults.csproj
-----------------------------------------------------
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsAspireSharedProject>true</IsAspireSharedProject>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />

    <PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.9.0" />
    <PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.5.0" />
    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.12.0" />
  </ItemGroup>

</Project>
--------------------------------------------------------------




Комментариев нет:

Отправить комментарий