Я пытаюсь добавить некоторое промежуточное программное обеспечение, чтобы любые необработанные исключения я улавливал и регистрировал, но испытывал некоторые трудности при этом. Не удалось найти много на этом и по какой-то нечетной причине мой код, кажется, не входит в блок catch. Похоже, что он грамотно справляется с этим и даже допрашивает словарь, я не вижу исключения.Обработка исключений в OWIN Middlware
Я хочу, чтобы это произошло, введите блок 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");
}
}