是否可以使用另一个程序集中的 Global.asax?
我正在尝试配置一个 ASP.NET MVC 应用程序,该应用程序将使用两个 MvcApplication 派生类之一,具体取决于应用程序运行的上下文。
包含所有生产代码、视图等的主 Web 应用程序具有从 global.asax 中的 MvcApplication 派生的标准类。我想要的是在 Web 测试期间使用另一个类(基于 Selenium 的浏览器测试)。我希望 Web 应用程序中的所有资源、代码、视图等都可以用于 global.axax/MvcApplication 类之外的。
测试站点需要不同的 global.asax,以便我可以以不同的方式设置容器,并配置一些其他设置(例如,日志记录、跟踪等),这些设置在测试期间很有帮助,但对生产没有意义。
有谁知道这是否可能,如果可以,该怎么做?
谢谢, 埃里克
I am trying to configure an ASP.NET MVC application that will use one of two MvcApplication derived classes, depending on the context under which the application is running.
The primary web application, which contains all production code, views, etc. has the standard class derived from MvcApplication in global.asax. What I want is to have another class that is used during web testing (Selenium based browser tests). I want all the resources, code, view, etc from the web application to be used except for the global.axax/MvcApplication class.
The testing site needs a different global.asax so that I can set up the container differently, and configure some other settings (e.g., logging, tracing, etc) that are helpful during test, but don't make sense for production.
Does anyone know if this is possible, and if so, how to do it?
Thanks,
Erick
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您可以将引导程序代码移动到两个不同的类中,一个用于调试,另一个用于实现相同接口的生产:IBootstrapProvider,并在您的全局asax中初始化其中一个依赖于Web配置中的参数!
这个解决方案对我有用!
我明白你的问题了吗?
希望能帮到你
马可
I think you can move your bootstrap code in a two difference class one for debug and other for production that implement the same interface : IBootstrapProvider, and in your global asax you initialize One of those depending from a parameter in the web config!
This solution works for me!
I understand good your question?
Hope can help you
Marco
如果您在 global.asax 中的代码位于 1 个位置(例如 Application_Start),那么 Marco 提供的解决方案是可行的。但是,如果您在其他方法(例如 Application_BeginRequest、Application_EndRequest)中有代码块,则将这些代码移出会困难得多。
在这种情况下,我建议使用 HttpModule。在 HttpModule 中,您可以订阅与 global.asax 中相同的事件,但它们位于不同的文件中。打开 HttpModule 只是注释掉 web.config 中的行。
有关如何实施和配置HttpModule。如果您需要 HttpModule 在 IIS 7 上运行,则需要在 web.config 中进行不同的设置:http://pro-thoughts.blogspot.com/2008/04/using-httpmodules-and-httphandlers.html
If the code you have in global.asax is in 1 place (say Application_Start) then the solution that Marco provides is doable. But if you have code blocks in other methods (like Application_BeginRequest, Application_EndRequest) this will be alot harder to move this code out.
In this case I would suggest using a HttpModule. In the HttpModule you can subscribe to the same events as in global.asax, but they are in a different file. Switching the HttpModule on is just commenting out the line(s) in the web.config.
See http://support.microsoft.com/kb/307996 on how to implement and configure a HttpModule. If you need the HttpModule to run on IIS 7 you need to set it differently in web.config: http://pro-thoughts.blogspot.com/2008/04/using-httpmodules-and-httphandlers.html