2009-07-31 5 views
1

Я разрабатываю HttpModule и использую Global.asax. Я разработал класс, который происходит из HttpApplication, но метод Application_Start моего класса никогда не выполняется (я создаю файл в начале Application_Start, но файл никогда не создается, и именно поэтому я считаю, что Application_Start никогда не выполняется). Я использую VSTS2008 + C# + .Net 3.5.Проблема Global.asax

Любые идеи, что не так и как отлаживать? Я хочу подтвердить, что я должен скопировать Global.asax в корневую директорию моего виртуального каталога веб-сайта, правильно? Должен ли я настраивать что-либо в файле web.config, чтобы запустить HttpModule?

ответ

1

Вы добавили свой модуль в раздел httpModules в свой web.config? См: http://msdn.microsoft.com/en-us/library/ms227673.aspx

+0

Спасибо, я разрабатываю Global.asax, это HttpModule? – George2

+0

На самом деле я использовал Application_Start, Application_End и Application_Error в global.asax, это httpmodule? Я смущен, потому что я думаю, что класс, полученный из IHttpModule, является http-модулем и нуждается в явном регистрации в web.config, и если я просто использую Global.asax, не нужно явно регистрироваться в web.config, и он будет автоматически использоваться? Любые комментарии? – George2

1

вам нужно добавить запись в web.config http://msdn.microsoft.com/en-us/library/9b9dh535.aspx

+0

Спасибо, я разрабатываю Global.asax, это HttpModule? – George2

+0

На самом деле я использовал Application_Start, Application_End и Application_Error в global.asax, это httpmodule? Я смущен, потому что я думаю, что класс, полученный из IHttpModule, является http-модулем и нуждается в явном регистрации в web.config, и если я просто использую Global.asax, не нужно явно регистрироваться в web.config, и он будет автоматически использоваться? Любые комментарии? – George2

2

Application_Start выполняет только один раз, когда приложение запускается в первый раз. Вы перезапустили приложение?

Да, Global.asax должен находиться в корневом каталоге.

Вы должны добавить свой новый модуль ASP.NET в web.config <httpModules> раздел.

+0

Да, 1. Я перезапускаю пул приложений. Означает ли это, что я перезапускаю приложение? 2. «Вы должны добавить свой новый модуль ASP.NET в раздел web.config ». - Можете ли вы показать мне образец? Фактически я использовал только Application_Start, Application_End и Application_Error в global.asax, это http-модуль? Я смущен, потому что я думаю, что класс, полученный из IHttpModule, является http-модулем и нуждается в явном регистрации в web.config, и если я просто использую Global.asax, не нужно явно регистрироваться в web.config, и он будет автоматически использоваться? Любые комментарии? – George2

+1

1. После перезапуска приложения AppPool ваше приложение остановилось. Теперь, когда ваше приложение получит первый запрос Application_Start (должен) выполнить. 2. Как зарегистрировать новый модуль - ссылку из ответа alex. Global.asax - это «экземпляр вашего приложения», это не модуль ASP.NET. Здесь вы можете обрабатывать глобальные события приложений. –

+0

Спасибо Tadas, 1. так что если я использую Global.asax, то не нужно регистрировать какие-либо модули в web.config? 2. Я обнаруживаю, что если я отправляю запрос на файл ashx для того же веб-приложения, Application_Start из Global.asax никогда не выполняется. Это правда? Есть идеи? – George2