1

我从 MVC3 的 HandleErrorAttribute 继承并扩展了一些自定义日志记录。

不过,我正在努力做的一件事是使用 Castle Windsor 巧妙地解决其中的依赖关系。

通常我在 ControllerActionInvoker 的扩展中解决这些依赖关系,但似乎 HandleErrorAttribute 没有通过这里。

我可以从哪里调用它并扩展它?

谢谢。

作为我目前所做的一个例子:https ://stackoverflow.com/a/6627002/148998

4

2 回答 2

1

HandleErrorAttribute 是一个IExceptionFilter,因此您可能还需要覆盖InvokeExceptionFilters您的 ControllerFactory 并在那里注入您的依赖项。

于 2012-08-23T02:01:45.997 回答
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);
        }
于 2012-08-30T04:33:18.233 回答