System.InvalidOperationException:无法解析 gRPC 通道 URI“http://0”

Yea*_*iam 19 azure-functions .net-5

Visual Studio 2019中使用.NET5 Azure 函数,我从 Program.cs 中收到以下异常:

System.InvalidOperationException:无法解析 gRPC 通道 URI“http://0”

Program.cs的如下:

public static void Main()
{
    var host = new HostBuilder()
            .ConfigureFunctionsWorkerDefaults()
            .ConfigureServices(services =>
            {
                services.AddSingleton<IConfiguration>(data =>
                {
                    var result = new ConfigurationBuilder()
                        .SetBasePath(Directory.GetCurrentDirectory())
                        .AddJsonFile("AppSettings.json", false, true)
                        .AddJsonFile($"AppSettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", true)
                        .AddEnvironmentVariables()
                        .Build();
                    return result;
                });

                services.AddSingleton<IServiceProvider, ServiceProvider>();
            })
            .UseDefaultServiceProvider(options => options.ValidateScopes = false)
            .Build();

    host.Run();
}
Run Code Online (Sandbox Code Playgroud)

异常是host.Run()在调试模式下抛出的。有什么线索吗?

ubi*_*bie 46

对我来说,这发生在《Rider》中。问题是我将 Function App 作为 .Net 项目运行,而不是作为 Azure Functions 主机运行。

骑手编辑运行/调试配置

  • @Serhat,我同意这是正确的答案,并且描述性不够,所以我会回答。Rider(三行菜单)-&gt; 运行 -&gt; 编辑配置。您将看到 .net 项目中的项目。选择它们并单击减号。选择 Azure Functions 主机。单击加号。选择您的函数应用程序的项目。给它起个名字。就我而言,名称存在冲突,因此我给了它一个新名称,但随后必须关闭骑手,删除 .idea 文件夹并重新启动骑手。一旦我返回到运行配置,我就能够正确地重命名配置。 (4认同)

Yea*_*iam 10

我的问题已经解决了。一旦我设置了IConfigurationfromConfigureAppConfiguratio中间件,异常就消失了

public static void Main()
{
    var host = new HostBuilder()
                    .ConfigureFunctionsWorkerDefaults()
                    .ConfigureAppConfiguration(config =>
                    {
                        config.SetBasePath(Directory.GetCurrentDirectory())
                            .AddJsonFile("AppSettings.json", false, true)
                            .AddJsonFile(
                                $"AppSettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json",
                                true)
                            .AddEnvironmentVariables();
                    })
                    .ConfigureServices(services =>
                    {
                        
                    })
                    .UseDefaultServiceProvider(options => options.ValidateScopes = false)
                    .Build();

            host.Run();
}
Run Code Online (Sandbox Code Playgroud)


小智 9

我在 VS 2022、.NET 7 中遇到了同样的问题。添加 nuget 包

Microsoft.Azure.Functions.Worker.Sdk

为我解决了这个问题。


小智 5

就我而言,关闭 Visual Studio 2022 并以管理员模式打开它解决了我的问题