首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET Core 3.0 gRPC 配置使用HTTP

ASP.NET Core 3.0 gRPC 配置使用HTTP

作者头像
晓晨
发布2019-10-21 17:22:58
1.5K0
发布2019-10-21 17:22:58
举报

前言

gRPC是基于http/2,是同时支持https和http协议的,我们在gRPC实际使用中,在内网通讯场景下,更多的是走http协议,达到更高的效率,下面介绍如何在 .NET Core 3.0 中如何为gRPC配置http。

服务端配置Kestrel

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.ConfigureKestrel(options =>
            {
                // Setup a HTTP/2 endpoint without TLS.
                options.ListenLocalhost(5000, o => o.Protocols =
                    HttpProtocols.Http2);
            });
            webBuilder.UseStartup<Startup>();
        });

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

在最新的asp.net core 中,http端口默认已经配置了,所以服务端配置不是必须的

客户端

客户端需要在创建 grpc 调用以前设置:

AppContext.SetSwitch(
                "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

示例:

AppContext.SetSwitch(
    "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var channel = GrpcChannel.ForAddress("http://localhost:5000");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
    new HelloRequest { Name = "晓晨" });
Console.WriteLine("调用Greeter服务 : " + reply.Message);

客户端跨语言调用非tls gRPC都需要这样设置。

相关资料: https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-3.0&WT.mc_id=DT-MVP-5003133

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 服务端配置Kestrel
  • 客户端
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档