【问题标题】:Blazor & gRPC routingBlazor 和 gRPC 路由
【发布时间】:2020-11-27 21:59:03
【问题描述】:

几个月前,在我升级到 .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.

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

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

【问题讨论】:

    标签: blazor grpc .net-5


    【解决方案1】:

    好的,我会回答我自己的问题。原来端点排序很重要。你必须注册你的 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");
        });
    

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2021-03-25
      • 2021-07-17
      • 2022-10-02
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多