带有 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 (将#修改为@)