如何在 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);
}
}
我正在尝试将错误跟踪服务 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);
}
}