带控制器动作过滤器的ASP.NET MVC DI

时间:2014-09-30 13:06:17

标签: asp.net-mvc dependency-injection action-filter

我正在使用asp.net mvc控制器和构造函数注入服务IMyServiceMyService(implements IMyService)在其构造函数中使用了一些上下文信息。此上下文信息由不同的第三方网站提供。创建MyService实例需要上下文信息。

控制器的动作过滤器使用一些逻辑来确定该上下文信息是否可用。如果没有,则请求被重定向到另一个网站。问题是,控制器构造函数在控制器的过滤器之前由IoC容器调用。因此,如果未提供上下文信息,MyService将抛出异常。

如何解决这种情况?

UPD
似乎DelegatingHandler是一种可行的方式。

1 个答案:

答案 0 :(得分:1)

如果您需要快速解决方法,可以使用从构造函数中删除IMyService,然后将其作为控制器的属性添加,并使用您的IoC服务定位器在方法需要时解析它控制器。