【问题标题】:.Net 5: Hosting ASP.NET Core gRPC Service in IIS 10 at Windows Server 2019.Net 5:在 Windows Server 2019 的 IIS 10 中托管 ASP.NET Core gRPC 服务
【发布时间】:2021-05-12 00:10:43
【问题描述】:

根据 Microsoft Doc 中的 post 和此警告部分:

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

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

我在 IIS 中托管我的服务 document

我的问题:从客户端调用RPC 方法时出错。

给定错误:

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

补充:我在网上搜索并调查了很多问题,但这些问题对我没有帮助。仍然,我有这个错误。我猜想对此操作有误解或遗漏的问题。

我的主要问题:实际上目前可以在 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;
    }

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

【问题讨论】:

  • 您发布的内容不是异常或错误消息。这是怎么产生的?如果状态为Cancelled客户端是否可能由于超时而取消了请求?
  • 现在,除了ASP.NET Core on Windows Server 2019之外,没有客户端或源代码,没有错误消息,没有环境信息,因此无法猜测出什么问题。您链接到的文档说明您需要 Windows Server Build 20241 才能部署到 IIS,该版本于 October 2020 发布
  • @PanagiotisKanavos 我编辑了我的问题。我的客户有基本配置,没有额外的配置
  • @PanagiotisKanavos 我已在问题中添加了操作系统和 IIS 版本。
  • gRPC 利用较新的 HTTP2 功能,例如双向流式传输 - IIS 不支持它们主要是因为 Windows HTTP.sys 中的 HTTP 协议驱动程序不支持这些高级功能。

标签: asp.net-core grpc iis-10 .net-5 grpc-dotnet


【解决方案1】:

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

参考: Host grpc service in iis or as an app service

【讨论】:

  • ASP.NET Core gRPC Services 可以在IISWindows Server Build 20241 及更高版本中托管。
  • 我将我的服务器OS 版本升级到这个版本,我的问题得到了解决。
  • 目前仅支持 Windows 10 / Windows Server Insider 构建,我们仍在等待它们是否会将这些 Windows V.Next 功能反向移植到 Windows Server 2019,如果是,不确定何时。因此,到目前为止,Windows 和 IIS 的此功能仍处于试验阶段或测试阶段。可以尝试替代 gRPC Web 或 ASPNetCore 的 HTTPSysServer。对我来说,我不认为它们是解决方案。
  • 这不是 .NET 5 的问题 - 它是 Windows 中的 HTTP.sys。 Windows 2022 或预览版/内部版本应支持这些尾随标头。
猜你喜欢
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多