You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 gRPC服务非TLS调用问题:能否实现无TLS访问?

可以实现无TLS调用gRPC端点

你遇到的Received RST_STREAM with code 2 triggered by internal client error: Protocol error错误,本质是客户端(Postman)默认用HTTP/1.1调用了依赖HTTP/2的gRPC服务,协议不匹配导致的。只要完成服务端和客户端的对应配置,就能正常无TLS调用gRPC接口。

服务端配置(.NET 6)

需要确保Kestrel明确允许非TLS端口使用HTTP/2协议,在Program.cs中添加以下配置:

var builder = WebApplication.CreateBuilder(args);

// 配置Kestrel监听非TLS端口并启用HTTP/2
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenLocalhost(51653, listenOptions =>
    {
        listenOptions.Protocols = HttpProtocols.Http2;
    });
});

// 添加gRPC服务
builder.Services.AddGrpc();

var app = builder.Build();

// 映射gRPC端点
app.MapGrpcService<YourGrpcService>();

app.Run();

如果你的服务需要同时支持HTTP/1.1(比如用于REST接口)和HTTP/2(gRPC),可以把HttpProtocols.Http2改成HttpProtocols.Http1AndHttp2,gRPC请求会自动适配HTTP/2。

Postman客户端配置

Postman默认对http://开头的请求使用HTTP/1.1,需要手动切换到HTTP/2:

  • 打开gRPC请求页面,输入服务器地址:http://localhost:51653
  • 点击页面底部的Advanced展开高级选项
  • 在HTTP Version下拉菜单中选择HTTP/2
  • 重新发送请求即可正常响应

内容的提问来源于stack exchange,提问作者Andrea Maestroni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:05:37