本地运行.NET 8独立进程Azure Function gRPC遇连接拒绝问题
.NET 8 独立进程模型Azure Functions本地运行Grpc连接失败问题
问题现象
基于独立进程模型开发.NET 8 Azure Function,本地运行时抛出如下错误:
Grpc.Core.RpcException: 'Status(StatusCode="Unavailable", Detail="Error connecting to subchannel.", DebugException="System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.")'
相关配置文件
local.settings.json
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }
host.json
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" }, "enableLiveMetricsFilters": true } } }
launchSettings.json
{ "profiles": { "SchooxIntegration": { "commandName": "Project", "dotnetRunMessages": true, "applicationUrl": "http://localhost:7071", "environmentVariables": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } } } }
修复方案
统一存储配置并启动本地存储服务:
将local.settings.json中的AzureWebJobsStorage值改为"UseDevelopmentStorage=true",与launchSettings保持一致。同时确保本地已安装并启动Azurite(或Azure Storage Emulator),否则无法使用开发存储账户。检查并处理Grpc端口占用:
独立进程模型下,函数主机与工作进程默认通过50051端口的Grpc通信。打开命令提示符执行netstat -ano | findstr :50051,若端口被占用,可通过任务管理器结束对应进程,或在local.settings.json中添加"FUNCTIONS_WORKER_GRPC_PORT": "50052"(替换为未占用端口)修改Grpc端口。验证工具与运行环境版本:
确认本地安装了.NET 8 SDK,且Azure Functions Core Tools为支持.NET 8的最新版本。可通过dotnet --version和func --version分别查看版本,版本不兼容则进行升级。清理重建项目:
执行dotnet clean清理项目缓存,再运行dotnet build重建项目,之后重新启动函数。
内容的提问来源于stack exchange,提问作者user3635416
相关产品推荐
相关产品推荐

