我通过一些自定义日志记录继承并扩展了MVC3的HandleErrorAttribute。
我努力做的一件事就是使用Castle Windsor整齐地解决依赖关系。
通常我会在ControllerActionInvoker的扩展中解决这些类型的依赖关系,但似乎HandleErrorAttribute不会在这里传递。
从哪里调用它我可以挂钩并扩展它?
感谢。
作为我目前所做工作的一个例子:https://stackoverflow.com/a/6627002/148998
答案 0 :(得分:1)
HandleErrorAttribute是IExceptionFilter
,因此您可能还需要覆盖ControllerFactory上的InvokeExceptionFilters
并在那里注入依赖项。
答案 1 :(得分:0)
我最终做的是扩展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);
}