мой вопрос должен быть довольно простым, но, к сожалению, мне не повезло в его решении.
В принципе, у меня есть несколько контроллеров Web API, размещенных OWIN и развернутых на Azure.
Мне действительно нужно отслеживать исключения, возникающие в каждом промежуточном программном обеспечении (например, OAuthAuthorizationServerProvider или SignalR Persistent Connections), но я определенно не знаю, как его достичь.
- Я пробовал Elmah, но он не работает должным образом с OWIN из-за отсутствия HttpContext.
- Я попытался использовать log4net, но я могу только регистрировать исключения, брошенные контроллерами веб-API, используя специальный ExceptionFilterAttribute.. другие игнорируются.
- Я попытался определить пользовательский LoggerFactory и назначить его в Startup, используя
app.SetLoggerFactory(new MyLoggerFactory())
, но исключение, созданное другими посредниками, не регистрируется. - Я попытался получить хотя бы значимое сообщение об ошибке, отправленное клиенту, но, несмотря на
<customErrors mode="Off"/>
и<deployment retail="false"/>
, Azure отказывается возвращать что-либо, кроме{"message":"an error has occurred"}
. Я пробовал как Azure Web Sites, так и Azure Cloud Services. - Я видел некоторые облачные альтернативы, которые должны работать с OWIN, такими как Elmah.io или Raygun.io, но мне не нужны их облачные функции, и это определенно не стоит платить сотни долларов в год, чтобы регистрировать некоторые исключения.
Каким должен быть лучший способ зарегистрировать любое возможное исключение, брошенное моим приложением?
Спасибо за помощь