微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 Ocelot 网关的 signalR 集线器

如何解决带有 Ocelot 网关的 signalR 集线器

我创建了一个虚拟解决方案,然后尝试通过 Ocelot Api 网关将 MVC 客户端与 signalR 集线器连接。

ocelot 适用于其他 http/https 端点,但不适用于 signalR websocker

MVC 客户端端口 => 5010

豹猫网关 => 5006

signalR 集线器 => 5008

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/WeatherForecast","DownstreamScheme": "https","DownstreamHostAndPorts": [
        {
          "Host": "localhost","Port": 5003
        }
      ],"UpstreamPathTemplate": "/WeatherForecast","UpstreamHttpMethod": [ "Get" ]
    },{
      "DownstreamPathTemplate": "/{catchAll}","DownstreamScheme": "ws","Port": 5008
        }
      ],"UpstreamPathTemplate": "/hub/{catchAll}","UpstreamHttpMethod": [ "GET","POST","PUT","DELETE","OPTIONS" ]
    }
  ],"GlobalConfiguration": {
    "BaseUrl": "https://localhost:5006"
  }
}

ocelot 项目启动.cs

    app.UseWebSockets();
    app.USEOcelot().Wait();

您可以在 Github 上查看解决方HERE

我遇到了这个错误

Ocelot.Responder.Middleware.ResponderMiddleware[0] requestId:0HM6825K74EEF:0000000F,prevIoUsRequestId:没有先前的请求ID,消息:错误代码:ConnectionTodownstreamServiceError 消息:连接到下游服务时出错,异常:System.Net.Http.HttpRequestException:发送请求时发生错误。 ---> System.IO.IOException: 响应提前结束。 在 System.Net.Http.httpconnection.FillAsync(布尔异步) 在 System.Net.Http.httpconnection.ReadNextResponseHeaderLineAsync(Boolean async,Boolean foldedHeadersAllowed) 在 System.Net.Http.httpconnection.SendAsyncCore(HttpRequestMessage 请求,布尔异步,CancellationToken 取消令牌) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Http.httpconnection.SendAsyncCore(HttpRequestMessage 请求,布尔异步,CancellationToken 取消令牌) 在 System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔异步,布尔 doRequestAuth,CancellationToken 取消令牌) 在 System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage 请求,布尔异步,CancellationToken 取消令牌) 在 System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request,HttpCompletionoption completionoption,Boolean async,Boolean emitTelemetryStartStop,CancellationToken cancelationToken) 在 Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) 在 ResponderMiddleware 中发现错误。设置请求路径错误响应:/hub/negotiate,请求方式:POST

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。