如何在 Orchard 中扩展错误处理代码?

How to extend error handling code in Orchard?

我正在尝试将错误跟踪服务 Raygun 添加到 Orchard,但是我不确定如何拦截应用程序抛出的异常。

在默认的 ASP.NET MVC 中,它通常是通过 Application_Error()Global.asax.cs 中完成的,在 Orchard CMS 中有没有类似的方法?

我发现唯一的方法是将代码显式放入自定义 ErrorPage.cshtml

推荐的方法是提供 Orchard.Exceptions.IExceptionPolicy 接口的自定义实现。在您的场景中,您可以使用默认实现 DefaultExceptionPolicy 作为后备。

例如,您可以在自定义 Orchard 模块中实现以下 class。

[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);
    }
}