Я разработал приложение образец signalR на основе ASP.NET 4.5 & Owin,SignalR, Owin и обработка исключений
и я принимал, что приложение на IIS 7.5
Все работает отлично, но как я могу обрабатывать исключения в Owin?
Рассмотрим следующие коды:
[HubName("SampleHub")]
public class SampleHub : Hub
{
public SampleHub()
{
throw new InvalidOperationException("?!");
}
}
Это исключение не будет называть Application_Error (и это моя проблема)
Где я могу получить все исключения из Owin для протоколирования и отладки похожи как
Application_Error?
Я не заинтересован в чем-то вроде этого:
app.UseErrorPage(new ErrorPageOptions()
{
ShowCookies = true,
ShowEnvironment = true,
ShowExceptionDetails = true,
ShowHeaders = true,
ShowQuery = true,
ShowSourceCode = true
});
Это совершенно бесполезно для сложных сценариев, что-то вроде asp.net Web API & ASP.NET MVC
фильтров действий с OnException методом для переопределения целей намного лучше.
Заранее спасибо.
Большое спасибо для вашего хорошего решения. Но этот модуль не может регистрировать исключения, такие как «Исключения провайдера дескриптора концентратора» и «активатор концентратора» в SignalR Модуль signalR не будет регистрировать конструкторские исключения концентраторов. Ваш модуль полезен, и я собираюсь использовать его в качестве регистратора SignalR. Но процесс создания и запуска SignalR выполняется самим «Owin». Где я могу получить эти исключения. Временно я применил все точки расширяемости SignalR, такие как IHubDescriptorProvider, IHubActivator и т. Д., Чтобы сделать возможной регистрацию, что, на мой взгляд, явно неверно. Есть идеи? –
@ halter73 он не работает для исключений, которые генерируются другими методами HubPipeLineModules или другими методами текущего модуля. –
Спасибо за ответ. Тем не менее я не могу получить 'OnIncomingError', когда я бросаю исключение в свой метод hub, вызываемый клиентом. Он зарегистрирован через 'GlobalHost.HubPipeline.AddModule()'. Почему мой 'HubPipelineModule' не вызван? – Artyom