#azure #websocket #signalr #ocelot
#azure #websocket #signalr #ocelot
Вопрос:
Я использую SignalR в своем приложении и получаю ошибку при загрузке шлюза ocelot на портал azure
Мой код ts
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl("https://url.azurewebsites.net/gatewayOcelot/notification", {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
})
.build();
и маршрут ocelot
{
"UpstreamPathTemplate": "/gatewayOcelot/{url}",
"UpstreamHttpMethod": [ "Get", "Put", "Delete", "Post", "Patch", "OPTIONS" ],
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "wss",
"DownstreamHostAndPorts": [
{
"Host": "apiURL.com",
"Port": 443
}
],
"HttpHandlerOptions": {
"AllowAutoRedirect": true
}
},
код запуска
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<NotificationHub>("/api/notification");
});
получить ошибку
WebSocket connection to 'wss://url.azurewebsites.net/gatewayOcelot/notification' failed: Error during WebSocket handshake: Unexpected response code: 502
Ответ №1:
Просто двойная проверка: WebSocket должен быть настроен на Ocelot:
Configure(app =>
{
app.UseWebSockets();
app.UseOcelot().Wait();
})
и в ocelot.json
{
"DownstreamPathTemplate": "/ws",
"UpstreamPathTemplate": "/",
"DownstreamScheme": "ws",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5001
}
],
}
Комментарии:
1. Я уже добавляю ocelot при запуске public void Configure (приложение IApplicationBuilder, приложение IWebHostEnvironment env) { приложение. Используйте WebSockets(); app.UseOcelot().Wait(); }
2. затем вы должны выполнить диагностику насекомых и решить проблемы => доступность и производительность вашего плана обслуживания приложений. ( 502 ошибки происходят на уровне IIS)
3. диагностика и решение проблемы: learn.microsoft.com/en-us/azure/app-service /…