我正在尝试配置一个ASP.NET MVC应用程序,该应用程序将使用两个MvcApplication派生类中的一个,具体取决于运行应用程序的上下文。
包含所有生产代码,视图等的主Web应用程序具有从global.asax中的MvcApplication派生的标准类。我想要的是在Web测试期间使用另一个类(基于Selenium的浏览器测试)。我希望web应用程序中的所有资源,代码,视图等用于global.axax / MvcApplication类的除之外。
测试站点需要不同的global.asax,以便我可以以不同方式设置容器,并配置一些在测试期间有用的其他设置(例如,日志记录,跟踪等),但对生产没有意义
有谁知道这是否可能,如果可行,怎么做?
谢谢, 埃里克
答案 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