You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 gRPC容器部署Azure App Service后无法正常运行

解决.NET 8 gRPC Azure App Service部署的HTTP/2协议错误

步骤1:配置Azure App Service应用设置

在App Service的「配置」-「应用程序设置」中添加以下键值对:

  • ASPNETCORE_URLS: http://+:80
  • ASPNETCORE_HTTP_PORTS: 80

步骤2:调整Dockerfile发布参数

修改发布阶段的UseAppHost参数为false,避免独立可执行文件的端口绑定冲突:

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./Api.gRpc.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

步骤3:确认App Service HTTP/2配置

在「配置」-「常规设置」中:

  • 将「HTTP版本」设为2.0
  • 将「HTTP 2.0 Proxy」设为On(不要选gRpc Only,Azure反向代理需要完整处理HTTP/2转发)

步骤4:检查客户端调用配置

确保客户端正确适配Azure的代理环境,示例代码:

var channel = GrpcChannel.ForAddress("https://************************.azurewebsites.net", new GrpcChannelOptions
{
    HttpHandler = new HttpClientHandler
    {
        // 仅测试环境使用,生产环境需保留证书验证
        ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
    }
});

原因说明

本地运行正常但部署后报错,核心原因是:

  • Azure App Service反向代理与容器内gRPC应用的HTTP/2协议握手不匹配
  • 容器内应用的启动参数或端口绑定配置导致无法正确接收代理请求

内容的提问来源于stack exchange,提问作者Ramesh Kanjinghat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 13:38:18