我从 MVC3 的 HandleErrorAttribute 继承并扩展了一些自定义日志记录。
不过,我正在努力做的一件事是使用 Castle Windsor 巧妙地解决其中的依赖关系。
通常我在 ControllerActionInvoker 的扩展中解决这些依赖关系,但似乎 HandleErrorAttribute 没有通过这里。
我可以从哪里调用它并扩展它?
谢谢。
作为我目前所做的一个例子:https ://stackoverflow.com/a/6627002/148998
我从 MVC3 的 HandleErrorAttribute 继承并扩展了一些自定义日志记录。
不过,我正在努力做的一件事是使用 Castle Windsor 巧妙地解决其中的依赖关系。
通常我在 ControllerActionInvoker 的扩展中解决这些依赖关系,但似乎 HandleErrorAttribute 没有通过这里。
我可以从哪里调用它并扩展它?
谢谢。
作为我目前所做的一个例子:https ://stackoverflow.com/a/6627002/148998
HandleErrorAttribute 是一个IExceptionFilter
,因此您可能还需要覆盖InvokeExceptionFilters
您的 ControllerFactory 并在那里注入您的依赖项。
我最终做的是扩展 ControllerActionInvoker 并解决那里的任何属性依赖关系,特别是针对异常过滤器。
编码:
public class WindsorActionInvoker : ControllerActionInvoker
{
private readonly IKernel _kernel;
public WindsorActionInvoker(IKernel kernel)
{
_kernel = kernel;
}
protected override ExceptionContext InvokeExceptionFilters(ControllerContext controllerContext, IList<IExceptionFilter> filters, System.Exception exception)
{
foreach (var actionFilter in filters.Where(actionFilter => !(actionFilter.GetType() == controllerContext.Controller.GetType())))
{
_kernel.InjectProperties(actionFilter);
}
return base.InvokeExceptionFilters(controllerContext, filters, exception);
}