首页 > 解决方案 > C# gRPC localhost - 启动 gRPC 调用时出错:不知道这样的主机

问题描述

我正在尝试让 Microsoft 的 gRPC“Greeter”应用程序在我的商务笔记本电脑上运行,但在调用 gRPC 调用时我不断收到以下异常:

Grpc.Core.RpcException: 'Status(StatusCode=Internal, Detail="Error starting gRPC call: No such host is known.")'

这是我遵循的 Microsoft 的文档。 我正在运行的确切代码来自 Microsoft 的示例,可以在他们的 github 上找到

它实际上归结为启动最基本的 gRPC 服务器,然后通过

using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client =  new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });

对 SayHelloAsync 的调用是引发异常的调用。我家用机器上完全相同的代码可以正常工作。我已经检查了我的 /etc/hosts 文件中是否有奇怪的条目,但什么也没有。我也尝试过更改https://localhost:5001https://[::1]:5001and https://127.0.0.1:5001,同样的例外,我觉得这非常奇怪。

我也已经尝试过 http viaAppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);并调用 http 端点,同样的例外。

标签: c#grpc

解决方案


我想到了。正如预期的那样,这是我的工作笔记本电脑的网络设置问题。

我设置了 HTTP_PROXY 和 HTTPS_PROXY 环境变量。这些被底层 HttpClient 拾取并尝试通过代理路由请求。删除 HTTP_PROXY 和 HTTPS_PROXY 环境变量解决了这个问题。或者设置 NO_PROXY 环境变量localhost,127.0.0.1,::1也可以解决问题。


推荐阅读