[英].net Grpc Request protocol 'HTTP/1.1' is not supported
我在 .net5 中實現了一個簡單的 gRPC 服務,類似於項目模板中的 GreeterService。
使用 IIS LocalHost 時服務工作正常,但客戶端在調用遠程服務器時拋出此異常:
Grpc.Core.RpcException HResult=0x80131500 Message=Status(StatusCode="Internal", Detail="Request protocol 'HTTP/1.1' is not supported.")
我以為 Grpc 默認使用 HTTP/2。 我究竟做錯了什么?
我有同樣的問題,我已經用 grpc web 作為反向代理出售了它。 首先你應該在你的 grpc 服務項目上安裝 Grpc.Net.Client.Web。 之后,使用中間件。
app.UseGrpcWeb();
然后用這個命令替換你的 MapGrpcService 。
endpoints.MapGrpcService<yourgRPCService>().EnableGrpcWeb();
在 ConfigureService 方法中,添加以下命令。
var handler = new GrpcWebHandler(GrpcWebMode.GrpcWebText, new
HttpClientHandler());
services.AddGrpcClient<YourService.YourServiceClient>(options =>
{
options.Address = new Uri("http://YourServerAddress");
}).ConfigureChannel(o=> {
o.HttpClient = new HttpClient(handler);
});
現在你應該注入你的 grpc 服務客戶端並調用你的方法。
@poury 救了我的命。 這對我有用。 我必須在 ConfigureService 方法中更新我的客戶端代碼並在下面添加代碼。 (需要Grpc.Net.Client.Web
包)
services.AddGrpcClient<GreeterService.GreeterServiceClient>(o => { o.Address = new Uri("https://localhost:5001");})
.ConfigureChannel( o =>
{
o.HttpHandler = new GrpcWebHandler(new HttpClientHandler());
});
還啟用app.UseGrpcWeb()
& endpoints.MapGrpcService<GreeterService>().EnableGrpcWeb();
在您的服務器代碼上。
PS:不知道為什么,因為我客戶端也是C#,不是瀏覽器?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.