.Net 5:在 Windows Server 2019 的 IIS 10 中托管 ASP.NET Core gRPC 服务

Has*_*thi 8 grpc iis-10 asp.net-core .net-5 grpc-dotnet

根据Microsoft Doc 中的这篇文章和此警告部分:

ASP.NET Core gRPC 对于与 Azure 应用服务或 IIS 一起使用有额外的要求。有关可以在何处使用 gRPC 的更多信息,请参阅 .NET 支持的平台上的 gRPC。

我使用上面的文档指南在包中创建了一个ASP.Net Core gRPC服务。.NET 5Grpc.AspNetCore(2.34.0)

对于本文档,我在 IIS 中托管了我的服务

我的问题RPC:我在客户端的调用方法中收到错误。

给定错误:

Status(StatusCode="Cancelled", Detail="No grpc-status found on response.")
Run Code Online (Sandbox Code Playgroud)

附加:我在网上搜索并调查了很多问题,但这些问题对我没有帮助。尽管如此,我还是有这个错误。我想对这个动作有一个误解或遗漏的问题。

我的主要问题:此时实际上可以在 IIS 中托管 ASP.NET Core Grpc 服务。

OS: Windows Server 2019 版本 1809 内部版本 17763.1697

IIS:版本10.0.17763.1

客户端代码:

    using var channel = GrpcChannel.ForAddress("https://192.168.13.155");
    var client = new ProccessMessage.ProccessMessageClient(channel);
    try
    {
        var result = client.GetMessage(new Request { Name = "Message" });
    }
    catch (RpcException ex)
    {
        string message = ex.Message;
    }
Run Code Online (Sandbox Code Playgroud)

我得到这个异常:Status(StatusCode="Cancelled", Detail="No grpc-status found on response.")在 catch 块中。

hB0*_*hB0 4

Windows Server 2019 - 尚不支持使用(进程内).NET 5 通过 IIS 托管 gRPC!

参考: 在iis中托管grpc服务或作为应用程序服务

  • 目前仅支持 Windows 10 / Windows Server Insider 版本,我们仍在等待他们是否会将这些 Windows V.Next 功能向后移植到 Windows Server 2019,如果是,则不确定何时。因此,Windows 和 IIS 的此功能迄今为止仍处于实验阶段或测试阶段。人们可以尝试替代 gRPC Web 或 ASPNetCore 的 HTTPSysServer.. 对我来说,我不认为它们是解决方案.. (3认同)
  • 这不是 .NET 5 问题 - 这是 Windows 中的 HTTP.sys 问题。Windows 2022 或预览/内部版本应该支持这些尾随标头。 (2认同)