Blazor 和 gRPC 路由



在我升级到.net 5.0之前,这是几个月前的工作。

在Blazor页面上,我使用gRPC调用Ping("wee"(,它应该返回一个字符串。相反,它给出以下输出:

dbug: Grpc.Net.Client.Internal.GrpcCall[1]
Starting gRPC call. Method type: 'Unary', URI: 'https://localhost:44395/MyGrpc.GrpcWebService/Ping'.
dbug: Grpc.Net.Client.Internal.GrpcCall[18]
Sending message.
trce: Grpc.Net.Client.Internal.GrpcCall[21]
Serialized 'System.String' to 5 byte message.
trce: Grpc.Net.Client.Internal.GrpcCall[19]
Message sent.
trce: Grpc.Net.Client.Internal.GrpcCall[2]
Response headers received.
info: Grpc.Net.Client.Internal.GrpcCall[3]
Call failed with gRPC error status. Status code: 'Internal', Message: 'Bad gRPC response. HTTP status code: 400'.
dbug: Grpc.Net.Client.Internal.GrpcCall[4]
Finished gRPC call.

不太确定从这里去哪里。。。但如果我将urlhttps://localhost:44395/MyGrpc.GrpcWebService/Ping粘贴到浏览器中,我会得到一个Blazor页面——而不是gRPC编码的响应。

gRPC和Blazor路由之间是否存在冲突?

好的,我来回答我自己的问题。事实证明端点排序很重要。你必须注册你的gRPC服务

app.UseEndpoints(fun endpoints ->
endpoints.MapGrpcService<MyService>() |> ignore
endpoints.MapGrpcService<WeatherService>() |> ignore
endpoints.MapGrpcService<GrpcWebService>() |> ignore
)

在标准blazor终点之前:

app.UseEndpoints(endpoints => {
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});

相关内容

  • 没有找到相关文章