.NET 8独立模型Azure Function本地启动报错:gRPC URI解析失败
.NET 8独立模式Azure Function本地启动报错:gRPC URI解析失败
我在VS 2022中尝试本地启动.NET 8独立模型(Isolated Worker Model)的Azure Function App时,执行到host.Run();时抛出gRPC URI解析失败的异常,无法正常运行。我没有直接使用gRPC,推测问题与宿主或启动代码相关,不确定是否遗漏了配置步骤(比如Azurite)或依赖库存在问题。
启动代码
using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using <namespace>.FunctionApps.Extensions; using Serilog; var environment = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT"); IConfiguration configuration = new ConfigurationBuilder() .AddJsonFile("host.json", optional: true, reloadOnChange: true) .AddJsonFile($"host.{environment}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .Build(); var logger = new LoggerConfiguration() .WriteTo.Console() .CreateLogger(); Log.Logger = logger; var builder = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureServices(services => { services.AddApplicationInsightsTelemetryWorkerService(); services.ConfigureFunctionsApplicationInsights(); services.RegisterServices(configuration, logger); }); var host = builder.Build(); host.Run();
抛出的异常
System.InvalidOperationException: 'The gRPC channel URI 'http://:' could not be parsed.'
Service Bus函数代码
using Microsoft.Azure.Functions.Worker; using <namespace>.Common.Helpers; using <namespace>.InterimSolutionModels.Extensions; using <namespace>.Models.DispatchMessages; using <namespace>.ServiceBus; using Serilog; namespace <namespace>.FunctionApps.Functions.DistributionList { public class DeleteDistributionList(ILogger logger) { private readonly ILogger _logger = logger; [Function(nameof(DeleteDistributionList))] [ServiceBusOutput(QueueNames.InterimProcessing, Connection = "ServiceBusConnectionString")] //public void Run([ServiceBusTrigger(QueueNames.Group.DistibutionListQueue.DeleteDistibutionList, Connection = "ServiceBusConnectionString")] ServiceBusReceivedMessage message) public string Run([ServiceBusTrigger(QueueNames.Group.DistibutionListQueue.DeleteDistibutionList, Connection = "ServiceBusConnectionString")] DistributionListDeleteMessage message) { _logger.Information($"Received Message: {message}"); var interimDistibutionListDelete = message.ToInterimModel(); var outPutJson = JsonHelper.ToJson(interimDistibutionListDelete); return outPutJson; } } }
项目文件内容
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> <OutputType>Exe</OutputType> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PublishReadyToRun>true</PublishReadyToRun> </PropertyGroup> <ItemGroup> <PackageReference Include="Azure.Storage.Blobs" Version="12.13.1" /> <PackageReference Include="Azure.Storage.Files.Shares" Version="12.1.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.1" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.ServiceBus" Version="5.15.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs" Version="6.0.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.2.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.4" /> <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="1.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" /> <PackageReference Include="Serilog" Version="3.1.1" /> <PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" /> <PackageReference Include="Serilog.Settings.Configuration" Version="8.0.0" /> <PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" /> </ItemGroup> <ItemGroup> <ProjectReference Include="<Path/Namespace>.Common.csproj" /> <ProjectReference Include="..\<Path/Namespace>.ServiceBus.csproj" /> <ProjectReference Include="..\<Path/Namespace>.Service.csproj" /> </ItemGroup> <ItemGroup> <None Update="host.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="local.settings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </None> </ItemGroup> <ItemGroup> <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" /> </ItemGroup> </Project>
已尝试的操作
- 更新项目模板并重新创建Function App项目,问题未解决。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

