是否可以使用另一个程序集中的Global.asax?

时间:2011-05-26 21:29:00

标签: asp.net-mvc iis asp.net-mvc-2 iis-express

我正在尝试配置一个ASP.NET MVC应用程序,该应用程序将使用两个MvcApplication派生类中的一个,具体取决于运行应用程序的上下文。

包含所有生产代码,视图等的主Web应用程序具有从global.asax中的MvcApplication派生的标准类。我想要的是在Web测试期间使用另一个类(基于Selenium的浏览器测试)。我希望web应用程序中的所有资源,代码,视图等用于global.axax / MvcApplication类的之外。

测试站点需要不同的global.asax,以便我可以以不同方式设置容器,并配置一些在测试期间有用的其他设置(例如,日志记录,跟踪等),但对生产没有意义

有谁知道这是否可能,如果可行,怎么做?

谢谢, 埃里克

2 个答案:

答案 0 :(得分:2)

我认为你可以将你的引导代码移动到两个不同的类中用于调试,而另一个用于实现相同接口的生产:IBootstrapProvider,并在你的全局asax中初始化其中一个取决于web配置中的参数! 这个解决方案适合我!

我理解你的问题很好吗?

希望可以帮助你 马可

答案 1 :(得分:1)

如果你在global.asax中的代码在1个位置(比如Application_Start),那么Marco提供的解决方案是可行的。但是如果你在其他方法中有代码块(比如Application_BeginRequest,Application_EndRequest),这将很难将这些代码移出。

在这种情况下,我建议使用HttpModule。在HttpModule中,您可以订阅与global.asax中相同的事件,但它们位于不同的文件中。打开HttpModule只是注释掉web.config中的行。

有关如何实施和配置HttpModule的信息,请参阅http://support.microsoft.com/kb/307996。如果您需要在IIS 7上运行HttpModule,则需要在web.config中以不同方式设置它:http://pro-thoughts.blogspot.com/2008/04/using-httpmodules-and-httphandlers.html