1

MVC3のHandleErrorAttributeを継承し、カスタムロギングを使用して拡張しました。

私が苦労していることの1つは、CastleWindsorを使用して依存関係を適切に解決することです。

通常、これらの種類の依存関係はControllerActionInvokerの拡張機能で解決しますが、HandleErrorAttributeはここを通過しないようです。

フックして拡張できるのはどこから呼び出されますか?

ありがとう。

私が現在行っていることの例として:https ://stackoverflow.com/a/6627002/148998

4

2 に答える 2

1

HandleErrorAttributeはそのIExceptionFilterため、ControllerFactoryもオーバーライドInvokeExceptionFiltersして、そこに依存関係を注入する必要があります。

于 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 に答える