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

本地部署ASP.NET Core函数应用后出现gRPC URI解析错误

问题描述

开发本地ASP.NET Core函数应用(无Azure集成),调试和Release模式下直接运行正常,所有端点均可正常工作。执行部署命令:

dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=false -p:UseAppHost=true -o "C:\MyAspNetApp"

部署完成后双击主程序,弹出错误:无法解析gRPC通道URI 'http://:'。但项目中从未配置过gRPC,解决方案内也无相关关键词。

附Program.cs代码:

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication()
    .ConfigureAppConfiguration(config =>
    {
        config.AddUserSecrets<Program>(optional: true, reloadOnChange: false);
    })
    .ConfigureServices((hostContext, services) =>
    {
        var authOptions = hostContext.Configuration.GetSection(nameof(OidcAuthOptions)).Get<OidcAuthOptions>();
        services
            .AddHttpClient()
            .AddTransient<NtlmRequestSender>()
            .AddTransient<PrintDocumentAction>()
            .AddTransient<OpenDocumentAction>()
            .AddSingleton<LoginStateModel>()

            // Register NtlmRequestSenderService as both hosted and injectable service
            .AddSingleton<NtlmRequestSenderService>() // Register it as a singleton for DI
            .AddHostedService(sp => sp.GetRequiredService<NtlmRequestSenderService>()) // Also register it as a hosted service

            .AddHostedService<EndpointTriggerService>();

    })
    .Build();

string trayAppPath = @"C:\Users\info\source\repos\Navcon\NAV.LocalService\NAV.TrayApp\bin\Debug\net8.0-windows\NAV.TrayApp.exe"; 
Process.Start(trayAppPath);

host.Run();
排查与解决思路
  • 检查函数应用默认配置:ASP.NET Core Functions部署后可能默认尝试绑定gRPC通道用于内部通信,尤其是调用ConfigureFunctionsWebApplication()时,可能隐含启用了相关组件。可尝试在配置中显式指定HTTP端口,或禁用不必要的gRPC相关配置。
  • 确认发布包配置完整性:调试环境依赖的配置可能未被正确纳入发布包。检查发布目录下的appsettings.json或用户机密是否存在,确保AzureWebJobsStorage这类必要配置(即使本地运行)已设为UseDevelopmentStorage=true或合适的本地值,避免因配置缺失导致框架自动尝试gRPC通道。
  • 排查UseAppHost的影响:启用UseAppHost=true会生成单独的宿主可执行文件,可能导致环境变量或配置传递异常。可临时改为UseAppHost=false重新发布测试,判断是否是宿主程序的配置传递问题。
  • 检查Hosted Service的隐式依赖:项目中的NtlmRequestSenderService或EndpointTriggerService可能间接依赖gRPC相关组件,比如通过HttpClient或其他服务注入。检查这些服务的实现代码,确认是否存在未显式声明的gRPC调用或配置引用。
  • 显式指定监听地址:发布时或启动前设置ASPNETCORE_URLS环境变量,比如http://localhost:5000,避免框架尝试解析空URI。可在发布命令中添加参数-p:ASPNETCORE_URLS=http://localhost:5000,或在程序启动前手动设置环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:19:59