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

问题描述:

我想配置一个ASP.NET MVC应用程序,它将使用两个MvcApplication派生类之一,具体取决于应用程序运行的环境。是否可以使用另一个程序集中的Global.asax?

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

测试网站需要不同的Global.asax,这样我可以设置不同的容器,并配置一些其他的设置(例如,记录,跟踪等),这些测试过程中有帮助的,但没有意义的生产。

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

感谢, 埃里克

我认为你可以在两个差班一个用于调试和其他生产实现了相同的接口移动你的引导代码:IBootstrapProvider,并在全球ASAX初始化其中之一取决于Web配置中的参数! 此解决方案适用于我!

我明白你的问题吗?

希望能帮助你 马尔科

+0

我希望避免有逻辑在测试我的版本的应用程序,但是这可能是最好的一段路要走。谢谢! – 2011-05-27 00:41:31

如果您在Global.asax中有该代码是在1个地方(说的Application_Start),那么马可提供的解决方案是可行的。但是如果你在其他方法中有代码块(比如Application_BeginRequest,Application_EndRequest),这个代码将很难被移出。

在这种情况下,我会建议使用HttpModule。在HttpModule中,您可以订阅与global.asax中相同的事件,但它们位于不同的文件中。打开HttpModule只是注释掉web.config中的行。关于如何实现和配置HttpModule,请参阅http://support.microsoft.com/kb/307996。如果您需要的HttpModule在IIS 7上运行,你需要在web.config中不同的设置:http://pro-thoughts.blogspot.com/2008/04/using-httpmodules-and-httphandlers.html

+0

谢谢 - 我将尝试多个类。我希望避免生产应用程序的任何更改,但看起来不错。 – 2011-05-27 00:42:11