Подтвердить что ты не робот

HttpModule с ASP.NET MVC не называется

Я пытаюсь реализовать шаблон сеанса за запрос в приложении 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, но они никогда не ломаются. Что мне не хватает?

4b9b3361

Ответ 1

Выводит файл Web.config в папке Views и в корневом каталоге. Угадайте, на каком из них я зарегистрировал httpModules? Да, папка Views одна. Я переместил его в корневой Web.config, и теперь он работает как шарм.

Ответ 2

Возможно, вам придется поместить Response.Write в метод, который подписывается на событие EndRequest (или BeginRequest). Я предполагаю, что объект Response не был полностью инициализирован на этапе Init.

Ответ 3

Моя проблема заключалась в том, что у меня был [HandleError] в методе контроллера, который улавливал ошибку до того, как мой пользовательский обработчик ошибок имел возможность.