tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

启动grpc报错:HTTP/2 over TLS is not supported on Windows 7

9396人阅读 2020/1/30 17:35 总访问:1637166 评论:3 收藏:0 手机
分类: net core

.net core grpc报错:NotSupportedException: HTTP/2 over TLS is not supported on Windows 7 due to missing ALPN support

是因为win7不支持TLS的原因

解决方法:在Program.cs中配置不包含 TLS 的 HTTP/2 终结点即可

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            //配置不包含TLS的HTTP/2终结点
            webBuilder.ConfigureKestrel(options =>
            {
                options.ListenLocalhost(50001, a => a.Protocols =
                        Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2);
            });

            webBuilder.UseStartup<Startup>();
        });

主要是这句话 Protocols = HttpProtocols.Http2 让kestrel支持无 tls http/2


调用的时候端口要换成50001,还要设置允许不安全的HTTP2支持

public async void CallgRPC()
{
    //设置允许不安全的HTTP2支持
    AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
    var channel = GrpcChannel.ForAddress("http://localhost:50001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(new HelloRequest { Name = "GrpcClient" });

    Console.WriteLine(reply.Message);
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

官方文档有说明:https://docs.microsoft.com/zh-cn/aspnet/core/grpc/troubleshoot?view=aspnetcore-3.0&WT.mc_id=DT-MVP-5003133




欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价