ASP.NET MVC控制器的策略注入

时间:2009-07-05 20:32:54

标签: asp.net-mvc enterprise-library aop policy-injection

我遇到了来自Enterprise Library的策略注入应用程序块与ASP.NET MVC一起出现的问题。

在我的ControllerFactory中,我正在创建控制器,然后在控制器上调用PolicyInjection.Wrap。这让我回到管理呼叫处理程序链的控制器的透明代理。

最后,我将透明代理转换为IController并将其返回。

这似乎运行良好,除了我为控制器定义的调用处理程序都没有执行。 (例如,我配置了Logging Handler,但PIAB没有记录任何内容。)

我的最后演员是否以某种方式搞砸了? ControllerBase.Execute()如何调用我的控制器?似乎应该使用我的代理。有人在ASP.NET控制器上使用PIAB吗?

2 个答案:

答案 0 :(得分:1)

我正在使用PIAB来封装ASP.NET MVC控制器,我这样做是通过调用

来实现的

PolicyInjection.Wrap<IController>(instance)

将包装IController方法。我也使用策略注入来包装也被使用的IActionInvoker,它允许记录动作名称。

我没有使用MarshalByRefObject包装成功包装控制器,但界面包装就像魅力一样。

如果您需要其他信息,可以创建一个包含IController,IActionFilter,IAuthorizationFilter,IExceptionFilter和IResultFilter的所有方法的接口,然后让您的控制器实现该接口。然后,您可以将控制器包装为该接口,并通过策略注入获得更多调用。

我希望有所帮助。如果您有更具体的问题,请发布。

答案 1 :(得分:-2)