c# - 如何在 gRPC 服务器上关闭 HTTPS

标签 c# .net-core https grpc

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

最佳答案

尽管这是一个老问题,但我最近不得不自己做这件事,下面是我是如何做到的,基于 Visual Studio 的 ASP.NET Core 模板:
首先,您必须将 kestrel 网络服务器配置为对 HTTP 使用 HTTP2 协议(protocol)(通常在 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>();
        });
现在服务器应该能够处理所有调用,无论使用 HTTP 还是 HTTPS。
在你这样做之后,你只需要在你第一次调用 gRPC 服务器之前告诉客户端允许使用没有 HTTPS 的 HTTP2:
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var client = new GrpcTest.GrpcTestClient(GrpcChannel.ForAddress("http://localhost:5000"));
资料来源:
  • https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-5.0#unable-to-start-aspnet-core-grpc-app-on-macos
  • https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-5.0#call-insecure-grpc-services-with-net-core-client
  • 关于c# - 如何在 gRPC 服务器上关闭 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602807/

    相关文章:

    C# 预处理器 - 为 XAML 设计器禁用代码

    security - 使用MD5将密码安全地从前端发送到后端

    c++ - 使用 C 或 C++ 运行本地服务器的最佳方法

    entity-framework - EF Core - 代码首次迁移 : Incorrect syntax near the keyword 'NOT'

    .NET Core 2 - 将文件夹复制到

    java - trustAnchors 参数必须非空

    c# - 有条件地仅在具有授权属性的端点上使用中间件

    c# - 当类是内部类时,为什么 C# 允许方法/成员公开

    c# - Blazor onclick 事件从循环中传入计数器

    c# - 使用依赖注入(inject)通过构造函数反射调用c#类方法