使用 ASP.NET Core 同时运行 REST API 和 gRPC

Had*_*zad 2 asp.net appsettings asp.net-web-api grpc grpc-dotnet

我正在尝试在特定端口(如 5000)上使用 ASP.NET Core 6 并行 REST API 运行 gRPC 服务器和客户端。我的意思是,我想使用 localhost:5000,但在检查了 的dotnetgRPC 模板之后,我发现Http2应该为 Kestrel 端点设置协议,appsettings.json如下所示:

{
  "urls": "http://localhost:5000",
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols": "Http2"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我遇到了一个问题,我的 REST API 不再工作,我猜这是因为Http2提供给 Kestrel 端点的协议,因为当我删除提供的协议 API 时,它可以正常工作;相反,gRPC 客户端无法工作。有什么办法可以并行运行两个端点吗?

dro*_*ear 5

可以通过以下appsettings.json配置将 gRPC 和 Web API 配置为使用不同的端口:

{
    "Kestrel": {
        "Endpoints": {
            "gRPC": {
                "Url": "https://localhost:5000",
                "Protocols": "Http2"
            },
            "WebApi": {
                "Url": "http://localhost:5001",
                "Protocols": "Http1"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)