Можно ли использовать Global.asax из другой сборки? - PullRequest
1 голос
/ 27 мая 2011

Я пытаюсь настроить приложение ASP.NET MVC, которое будет использовать один из двух производных классов MvcApplication, в зависимости от контекста, в котором работает приложение.

Основное веб-приложение, которое содержит весь производственный код, представления и т. Д., Имеет стандартный класс, полученный из MvcApplication в global.asax. Я хочу иметь другой класс, который будет использоваться во время веб-тестирования (тесты браузера на основе Selenium). Я хочу, чтобы все ресурсы, код, представление и т. Д. Из веб-приложения использовались , кроме для класса global.axax / MvcApplication.

На сайте тестирования требуется другой файл global.asax, чтобы я мог настроить контейнер по-другому и настроить некоторые другие параметры (например, ведение журнала, трассировка и т. Д.), Которые полезны во время тестирования, но не имеют смысла для производства. .

Кто-нибудь знает, возможно ли это, и если да, то как это сделать?

Спасибо, Erick

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Я думаю, вы можете переместить ваш загрузочный код в два разностных класса, один для отладки и другой для производства, которые реализуют тот же интерфейс: IBootstrapProvider, и в глобальном asax вы инициализируете один из них в зависимости от параметра в веб-конфигурации!Это решение работает для меня!

Я хорошо понимаю ваш вопрос?

Надежда может помочь вам Марко

1 голос
/ 27 мая 2011

Если код, который вы имеете в global.asax, находится на 1 месте (скажем, Application_Start), то решение, которое предлагает Marco, выполнимо. Но если у вас есть блоки кода в других методах (например, Application_BeginRequest, Application_EndRequest), будет намного сложнее переместить этот код.

В этом случае я бы предложил использовать HttpModule. В модуле HttpModule вы можете подписаться на те же события, что и в global.asax, но они находятся в другом файле. Включение модуля HttpModule просто комментирует строки в файле web.config.

См. http://support.microsoft.com/kb/307996 о том, как реализовать и настроить HttpModule. Если вам нужен HttpModule для работы на IIS 7, вам нужно установить его по-другому в web.config: http://pro-whyts.blogspot.com / 2008/04 / using-httpmodules-and-httphandlers.html

...