Сеанс ASP.NET MVC для каждого шаблона запроса и IHttpModule - PullRequest
1 голос
/ 10 января 2010

Я пытаюсь найти решение, как в Модуль Http с ASP.NET MVC не вызывается

Как мне отфильтровать запрос? Я хочу открыть ISession, только если запрос предназначен для действия ASP.NET MVC, а не для * .gif, * .css и т. Д.

Как мне справиться с этой фильтрацией?

Ответы [ 3 ]

2 голосов
/ 10 января 2010

Сессии очень дешевы в создании, я бы не стал использовать этот фильтр.

Буквально, открытие ISession - это вопрос new SessionImpl(..). SessionImpl constructor и dispose ничего не делают, если в сеансе ничего не произошло.

1 голос
/ 10 января 2010

Вы можете добавить предварительное условие managedHandler в свой модуль. Но я не знаю, насколько хорошо он будет вписываться в ASP.NET MVC из-за статической передачи файлов через маршрутизацию.

В любом случае, вы можете попробовать что-то вроде:

<add name="RequestTimer" type="MySite.HttpModule.RequestTimeModule, MySite" precondition="managedHandler" />

Посмотрите здесь для получения дополнительной информации - Предварительные условия IIS7

HTHS,
Charles

0 голосов
/ 04 февраля 2010

Вы можете использовать это:

void IHttpModule.Init(HttpApplication context)
{
    context.PreRequestHandlerExecute += new System.EventHandler(context_PreRequestHandlerExecute);
}

И тогда вы можете проверить, является ли обработчик MVC (тип MvcHandler) выполнением вашего запроса:

 void context_PreRequestHandlerExecute(object sender, System.EventArgs e)
 {
     HttpContext context = ((HttpApplication)sender).Context;
     Type mvcht = typeof(System.Web.Mvc.MvcHandler);
     if (context.Handler != null && context.Handler.GetType().IsAssignableFrom(mvcht))
     {
         ..... Code goes here.
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...