【发布时间】:2021-05-12 00:10:43
【问题描述】:
根据 Microsoft Doc 中的 post 和此警告部分:
ASP.NET Core gRPC 对与 Azure 应用程序一起使用有额外的要求 服务或 IIS。有关可以在何处使用 gRPC 的更多信息,请参阅 .NET 支持平台上的 gRPC。
我使用上述文档指南在 .NET 5 和 Grpc.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