grpc/grpc-dotnet

"Grpc.Core.RpcException":"Grpc.Core.RpcException: Status(StatusCode="Cancelled", Detail="No grpc-status found on response.")

shuowpro opened this issue · 1 comments

What version of gRPC and what language are you using?

Grpc.Net.Client: 2.55.0

What operating system (Linux, Windows,...) and version?

Microsoft Windows NT 10.0.20348.0

What runtime / compiler are you using (e.g. .NET Core SDK version dotnet --info)

Net 8.0.7

What did you do?

If possible, provide a recipe for reproducing the error. Try being specific and include code snippets if helpful.

What did you expect to see?

We should not have No grpc-status found on response error

What did you see instead?

We have the following error

Grpc.Core.RpcException":"Grpc.Core.RpcException: Status(StatusCode="Cancelled", Detail="No grpc-status found on response.")

This looks like to be a problem similar to #1164. but this problem seems to only happened on .net framework. But in our case, it is running on Net 8, which should not have this problem.

we are using the subdirectory handler as suggested here: https://learn.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-8.0#calling-grpc-services-hosted-in-a-sub-directory

We had similar errors (same message) with .NET 8 + 2.62.0 (both client and server) in one of our production environments. The reason was header alt-svc h3=":433"; ma=86400 in first RPC response, with following upgrade to HTTP/3 which led to the channel's inoperability .

I'm not sure which infrastructure level was a problem (we use Cloudflare + k8s), but disabling HTTP/3 support for our gRPC domains in Cloudflare fixed it. I suppose configuring SocketsHttpHandler to use only HTTP/2 also can fix this case.