Контекст. Существуют различия между ASP.NET SignalR и ASP.NET Core SignalR, которые можно прочитать здесь .
Как описано в этом сообщении stackoverflow в ASP.NET SignalR, вы можете перехватывать необработанные исключения на стороне сервера через HubPipelineModule
, которого нет в ASP.NET Core SignalR.
Как мы можем перехватить необработанные исключения и передать их клиентской стороне в ASP.NET Core SignalR?
Код JavaScript (клиент):
var hub = null;
var initWebSocket = function () {
hub = new signalR.HubConnectionBuilder().withUrl("/MyHub").build();
hub.on("ReceiveMessage", function (pMessage) {
[...]
});
hub.start().catch(function (err) {
return console.error(err.toString());
});
};
var executeWebsocketTestException = function () {
// send to server
hub.invoke("TestException").catch(function (exception) {
if(exception.type)
{
...
}
});
};
ASP.NET Core 2 Hub (сервер):
public class MyHub : Hub
{
public async Task TestException()
{
throw new SignalRTest.Exceptions.TestException("This is a Websocket Test Exception.");
}
}