问题描述
我创建了一个虚拟解决方案,然后尝试通过 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();
我遇到了这个错误
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 (将#修改为@)