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

Mac M1启动Dotnet Isolated Azure Function遇Grpc.Core.RpcException错误

排查Mac M1上.NET Isolated模式Azure Functions启动gRPC错误的建议

以下是针对你遇到的Grpc.Core.RpcException: Status(StatusCode="Unavailable", Detail="Error starting gRPC call... Broken pipe")错误的具体排查步骤:

1. 切换HTTP/1.1通信绕过gRPC HTTP/2兼容性问题

M1芯片环境下,gRPC的HTTP/2握手可能存在适配问题,可强制Worker与Host使用HTTP/1.1通信:
修改local.settings.json,在Values节点添加配置项:

"FUNCTIONS_WORKER_RPC_USE_HTTP": "true"

修改后的完整配置:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "FUNCTIONS_WORKER_RPC_USE_HTTP": "true"
    }
}

2. 更新.NET Isolated包版本以兼容Core Tools

你的项目中Microsoft.Azure.Functions.Worker(1.8.0)和Microsoft.Azure.Functions.Worker.Sdk(1.7.0)版本较旧,与Functions Core Tools v4存在兼容风险。建议升级到最新稳定兼容版本:
修改.csproj中的包引用版本:

<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.14.1" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.10.0" />

执行命令更新依赖:

dotnet restore

3. 验证.NET运行时架构适配M1芯片

检查.NET是否安装了arm64架构版本:

dotnet --info

查看输出中的Runtime Architecture字段,确保显示为arm64。如果是x64,卸载现有.NET后重新下载安装arm64版本的.NET 6 SDK。

4. 排查端口冲突问题

启动日志显示函数监听7071,但launchSettings.json指定的是7146,可能存在端口未生效或被占用的情况:

  • 检查7071端口占用情况:
lsof -i :7071
  • 手动指定端口启动函数:
func start --port 7146

5. 清理项目缓存并重新构建

执行以下命令清理旧缓存并重新生成项目:

dotnet clean
rm -rf bin obj
dotnet build
func start

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:31:01