面向 Azure 应用服务上的 .NET 8 的 ASP.NET Core Web API

ASP.NET Core Web API targeting .NET 8 on Azure App Service

提问人:Sam 提问时间:11/15/2023 最后编辑:marc_sSam 更新时间:11/22/2023 访问量:439

问:

我有一个 ASP.NET 核心 Web API,我一直在 Azure 应用服务 Windows 平台上运行。此应用面向 .NET 7,今天我将其更新为面向 .NET 8。它在本地编译和运行良好。

根据此公告,.NET 8 现已在 Azure 应用服务上推出:https://azure.github.io/AppService/2023/11/14/dotnet8-ga.html

我将应用部署到 Azure 应用服务,然后将 .NET 版本更改为 .NET 8 -- 见下文:

enter image description here

这不起作用,我一直收到以下错误:

ANCM 找不到本机依赖项

然后我在Reddit上找到了这篇文章: https://www.reddit.com/r/dotnet/comments/17v7qb5/http_error_50031_ancm_failed_to_find_native/

因此,我继续在“高级工具”下安装并通过 Kudu 进行安装——见下文:ASP.NET Core .NET 8 x64x86

enter image description here

然后,我在 Azure 应用服务上多次停止并重新启动该应用,但它仍然无法正常工作。当我尝试在我的 API 上点击终结点时,它会旋转和旋转很长时间,并返回“服务不可用”错误,但根据 Azure 上的应用程序仪表板,它已启动并运行。

有什么建议吗?还有其他人遇到升级到 .NET 8 的问题吗?

PS:我的 API 应用程序的部署是通过 GitHub 操作完成的,我确实将 .NET 版本更新到 .NET 8 - 见下文:

enter image description here

asp.net Azure-Web-App-Service net-8.0

评论

1赞 Jason Pan 11/22/2023
检查问题后,发现 .net 8 并非在所有地区都可用。Menintherigging的发现是有用的。有关更多详细信息,您还可以查看此线程

答:

0赞 Pravallika KV 11/15/2023 #1

我已经创建了一个基本的 ASP .NET Core Web API,版本为 .NET-8.0 并使用 GitHub 操作部署到 Azure 应用服务。

遵循的步骤:

  • 创建了具有 .NET 8 版本的 ASP .NET Core Web API 项目,并能够在本地运行。

  • 修改后的程序 .cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(x =>
{

    x.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API V1");

#if DEBUG
    x.RoutePrefix = "swagger"; // For localhost
#else
    x.RoutePrefix = string.Empty; //  For azure
#endif
}
);
app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

  • 将应用程序推送到 GitHub。
  • 使用 创建了 Windows Azure 应用服务。NET-8.0(Early Access)作为运行时堆栈。

enter image description here

  • 使用 GitHub Actions 将应用程序部署到 Azure。

我的工作流程:

下面是我用于部署应用程序的工作流。

name: Build and deploy ASP.Net Core app to Azure Web App - <web_app_name>

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '8.x'
          include-prerelease: true

      - name: Build with dotnet
        run: dotnet build --configuration Release

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: .net-app
          path: ${{env.DOTNET_ROOT}}/myapp

  deploy:
    runs-on: windows-latest
    needs: build
    environment:
      name: 'Production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: .net-app
      
      - name: Deploy to Azure Web App
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: '<web_app_name>'
          slot-name: 'Production'
          package: .
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_FXXXXXXXXXX }}

部署状态:

enter image description here

成功运行应用程序。

enter image description here

如果在部署应用程序时问题仍然存在,请在 GitHub 工作流中添加 dotnet 的 publish 命令。--self-contained

      - name: dotnet publish
        run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp --self-contained true
2赞 Menintherigging 11/22/2023 #2

我基本上遇到了使用 .NET Core 8 Web 应用程序部署到 Azure 的相同问题。您可以使用“独立”作为解决方法。 但是,我发现,如果部署到“美国东部”,它可以正常工作,但“英国南部”会产生“服务不可用”。

评论

0赞 Menintherigging 11/22/2023
我收到了这个信息:“因为现在......NET 8 目前还处于抢先体验阶段,部分地区应该处于测试阶段,稳定后没有问题时,会部署在各个地区。因此,请耐心等待应用服务团队的更新。
0赞 Mark3308 12/2/2023
英国南部现已为我更新
0赞 Martin Watts 11/29/2023 #3

我也遇到了这个问题,对我来说,解决方案是由 .Net 7 站点扩展引起的,该扩展必须使用高级工具 -> 站点扩展进行更新。将扩展(ASP.Net Core Logging Integration)更新到 .Net 8 版本并重新启动应用服务后,一切正常。

请注意,我只是在 VS 2022 中使用点击发布部署,并发布到西欧地区。

0赞 Daniel Elkington 12/5/2023 #4

Microsoft现在已经发布了一个修复程序

我已经在澳大利亚东南部地区进行了测试(不起作用),现在它可以工作了。