2015-06-08 15 views
0

Я пытаюсь добавить службу отслеживания ошибок Raygun в Orchard, однако я не уверен, как перехватить исключение, созданное приложением.Как расширить код обработки ошибок в Orchard?

В стандартном ASP.NET MVC обычно выполняется через Application_Error() в Global.asax.cs, есть ли способ сделать это аналогично в Orchard CMS?

Единственный способ, которым я нашел это, - явно указать код в пользовательский ErrorPage.cshtml.

ответ

1

Рекомендуемый способ - обеспечить пользовательскую реализацию интерфейса Orchard.Exceptions.IExceptionPolicy. В вашем сценарии вы можете использовать реализацию по умолчанию DefaultExceptionPolicy в качестве резервной копии.

Например, вы можете реализовать следующий класс в своем пользовательском модуле Orchard.

[OrchardSuppressDependency("Orchard.Exceptions.DefaultExceptionPolicy")] 
public class IssueTrackerExceptionPolicy : DefaultExceptionPolicy, IExceptionPolicy 
{ 
    bool IExceptionPolicy.HandleException(object sender, Exception exception) 
    { 
     // TODO: Log exception here. 

     return base.HandleException(sender, exception); 
    } 
} 
+0

Хотя сомнительно, что вы должны это делать вообще, поскольку уже существует поддержка Log4Net из коробки, что должно быть достаточным для большинства сценариев. Было бы интересно узнать, каков конкретный сценарий здесь. –

+0

Каротаж скважины не всегда достаточно хорош. Я использую очень similar решение, чтобы автоматически сообщать необработанные исключения из приложений Orchard в систему автозагрузки (YouTrack в моем случае). Он работает очень хорошо. –

+0

Конечно, но мне было интересно, был ли Мишель в таком случае. –