Ответ 1
Выводит файл Web.config в папке Views и в корневом каталоге. Угадайте, на каком из них я зарегистрировал httpModules? Да, папка Views одна. Я переместил его в корневой Web.config, и теперь он работает как шарм.
Я пытаюсь реализовать шаблон сеанса за запрос в приложении ASP.NET MVC 2 Preview 1, и я внедрил IHttpModule, чтобы помочь мне сделать это:
public class SessionModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.Response.Write("Init!");
context.EndRequest += context_EndRequest;
}
// ... etc...
}
И я поместил это в файл web.config:
<system.web>
<httpModules>
<add name="SessionModule" type="MyNamespace.SessionModule" />
</httpModules>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="SessionModule" />
<add name="SessionModule" type="MyNamespace.SessionModule" />
</modules>
Однако, "Init!" никогда не записывается на страницу (я использую встроенный веб-сервер VS, Cassini). Кроме того, я попытался поставить контрольные точки в SessionModule, но они никогда не ломаются. Что мне не хватает?
Выводит файл Web.config в папке Views и в корневом каталоге. Угадайте, на каком из них я зарегистрировал httpModules? Да, папка Views одна. Я переместил его в корневой Web.config, и теперь он работает как шарм.
Возможно, вам придется поместить Response.Write в метод, который подписывается на событие EndRequest (или BeginRequest). Я предполагаю, что объект Response не был полностью инициализирован на этапе Init.
Моя проблема заключалась в том, что у меня был [HandleError] в методе контроллера, который улавливал ошибку до того, как мой пользовательский обработчик ошибок имел возможность.