среда, 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>
--------------------------------------------------------------




понедельник, 27 октября 2025 г.

Aspire, RazorPage, Project

Aspire, RazorPage, Project

F:\Projects\VS\AspireRazorChartSln\AspireRazorChartSln.sln

F:\Projects\VS\AspireRazorChartSln\AspireRazorChart01\AspireRazorChart01.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" />

Эта конфигурация обеспечит правильную интеграцию со всеми компонентами .NET Aspire Dashboard.

Aspire, Update, 9.51

Aspire, Update, 9.51

https://learn.microsoft.com/en-us/dotnet/aspire/get-started/upgrade-to-aspire-9?pivots=visual-studio

Habr, Article, Aspire

Habr, Article, Aspire

https://habr.com/ru/articles/818907/

https://habr.com/ru/articles/820371/

https://habr.com/ru/articles/820435/

Aspire, Doc, GitHub, Release

Aspire, Doc, GitHub, Release

https://learn.microsoft.com/ru-ru/dotnet/aspire/

https://learn.microsoft.com/ru-ru/dotnet/aspire/whats-new/dotnet-aspire-9.5

https://github.com/dotnet/aspire/releases


Update, Aspire 9.5, Azure, Package, Install

Install (Azure) microsoft.azd,  Update, Aspire 9.5

----------------------------------------------------------------

PS C:\Users\Administrator> winget install microsoft.azd

The `msstore` source requires that you view the following agreements before using.

Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction

The source requires the current machine's 2-letter geographic region to be sent to the backend service to function properly (ex. "US").

Do you agree to all the source agreements terms?

[Y] Yes  [N] No: Y

Found Azure Developer CLI [Microsoft.Azd] Version 1.20.300

This application is licensed to you by its owner.

Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.

Downloading https://github.com/Azure/azure-dev/releases/download/azure-dev-cli_1.20.2/azd-windows-amd64.msi

  ██████████████████████████████  15.7 MB / 15.7 MB

Successfully verified installer hash

Starting package install...

Successfully installed

PS C:\Users\Administrator> winget install microsoft.azdwinget install microsoft.azd

-----------------------------------------------------------------------------------------------

Update, Aspire 9.5

https://learn.microsoft.com/ru-ru/dotnet/aspire/whats-new/dotnet-aspire-9.5

Что нового в версии Aspire 9.5

📢 Aspire 9.5 — это следующая минорная версия Aspire. Он поддерживает:

  • .NET 8.0 Долгосрочная поддержка (LTS).
  • .NET 9.0 Стандартная поддержка терминов (STS).
  • .NET Кандидат выпуска 10.0 (RC) 1.

Если у вас есть отзывы, вопросы или хотите внести свой вклад Aspire, сотрудничайте с нами или присоединяйтесь к нам  GitHub в  Discord , чтобы поговорить с командой и другими участниками сообщества.

Важно отметить, что выпуски Aspire являются внеочередными от выпусков .NET. Хотя основные версии Aspire соответствуют основным .NET версиям, дополнительные версии выпускаются чаще. Дополнительные сведения о поддержке версий .NET и Aspire см.:

⬆️ Обновление до Aspire версии 9.5

 Примечание

aspire updateПопробуйте! Aspire 9.5 представляет новую команду CLI предварительной версии — aspire update — которая может обновить ваш AppHost и его пакеты. Получите последнюю версию интерфейса командной строки, если вы хотите отправить нам отзыв об этом GitHub!

Переход между минорными выпусками Aspire прост.

  1. Получите последнюю версию Aspire интерфейса командной строки.

    Bash
    curl -sSL https://aspire.dev/install.sh | bash
    
    PowerShell
    iex "& { $(irm https://aspire.dev/install.ps1) }"
    
  2. В файле проекта AppHost (то есть MyApp.AppHost.csproj) обновите пакет 📦Aspire.AppHost.Sdk до версии 9.5.1:

    XML
    <Sdk Name="Aspire.AppHost.Sdk" Version="9.5.1" />
    

    Дополнительные сведения см. в разделе Aspire SDK.

  3. Проверьте наличие обновлений пакета NuGet, используя диспетчер пакетов Visual Studio или команду Обновить пакет NuGet из C# Dev Kit в Visual Studio Code (Visual Studio Code).

  4. Обновите до последнихAspire шаблонов, выполнив следующую .NET команду:

    Интерфейс командной строки.NET
    dotnet new install Aspire.ProjectTemplates
    

 Примечание

Команда dotnet new install обновляет существующие Aspire шаблоны до последней версии, если они уже установлены.

Если файл проекта AppHost не содержит ссылку Aspire.AppHost.Sdk , возможно, вы по-прежнему используете Aspire 8. Чтобы обновить до 9, следуйте руководству по обновлению.