我正在尝试添加一些中间件,以便我捕获并记录任何未处理的异常,但这样做会遇到一些困难。由于一些奇怪的原因我的代码似乎没有进入catch块,因此无法在此找到很多内容。好像它正在优雅地处理这个,甚至询问字典我也看不到例外。
我想要发生的是,进入catch块获取异常并记录堆栈跟踪。
代码:
public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
app.Use(typeof(FooHandler));
app.UseWebApi(config);
}
}
public class FooHandler : OwinMiddleware
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(FooHandler));
public FooHandler(OwinMiddleware next) : base(next)
{
}
public override async Task Invoke(IOwinContext context)
{
if (Logger.IsErrorEnabled)
{
try
{
await Next.Invoke(context);
}
catch (Exception ex)
{ // DOESN'T FALL INTO HERE!
Logger.Error(message, ex);
}
}
}
}
public class FooController : ApiController
{
public Task<IHttpActionResult> Get()
{
throw new Exception("Foo Bar");
}
}
答案 0 :(得分:0)
这是因为WebApi正在处理异常。您需要处理控制器在ExceptionFilterAttribute