我已经开发了基于ASP.NET 4.5 & Owin样本signalR应用,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网页API & asp.net的MVC
操作筛选与onException的方法完全无用为了覆盖的目的要好得多。
在此先感谢。
非常感谢为你的好解决方案。 但是,此模块无法记录异常,如SignalR 的'集线器描述符提供程序的异常和'集线器激活程序'部分signalR模块不会记录集线器的构造函数异常。 你的模块很有用,我将用它作为SignalR记录器。 但是SignalR的创建和启动过程是由'Owin'本身执行的。我在哪里可以得到这些例外。 暂时,我已经实现了SignalR的所有扩展点,如IHubDescriptorProvider,IHubActivator等,以使日志成为可能,这在我看来显然是错误的。任何想法? –
@ halter73它不适用于其他HubPipeLineModules方法或当前模块的其他方法中引发的异常。 –
感谢您的回答。当我在客户端调用的集线器方法中抛出异常时,仍然无法调用“OnIncomingError”。它通过'GlobalHost.HubPipeline.AddModule()'注册。为什么我的'HubPipelineModule'没有被调用? – Artyom