如何在 gRPC 服务器上关闭 HTTPS

Sil*_*ami 5 c# https .net-core grpc

如何在 gRPC 服务器上关闭 HTTPS?有什么选择吗?

小智 1

尽管这是一个老问题,但我最近不得不自己做这件事,以下是我的做法,基于 Visual Studio 的 ASP.NET Core 模板:

首先,您必须配置 kestrel Web 服务器以使用 HTTP2 协议(通常在 Program.cs 中):

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
          webBuilder.ConfigureKestrel(options =>
            options.ConfigureEndpointDefaults(defaults =>
              defaults.Protocols = HttpProtocols.Http2));
          webBuilder.UseStartup<Startup>();
        });
Run Code Online (Sandbox Code Playgroud)

现在服务器应该能够处理所有调用,无论使用 HTTP 还是 HTTPS。

完成此操作后,您只需告诉客户端允许在不使用 HTTPS 的情况下使用 HTTP2,然后再首次调用 gRPC 服务器:

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var client = new GrpcTest.GrpcTestClient(GrpcChannel.ForAddress("http://localhost:5000"));
Run Code Online (Sandbox Code Playgroud)

资料来源: