Запросы на статические файлы бьют по управляемому коду в ASP.NET MVC3

Создавая пользовательские IHttpModules, я понял, что запросы на статические файлы (например: .css и .js файлы) попадают в управляемые модули. Вероятно, у фотографий та же проблема. Разве IIS не должен обходить ASP.NET для файлов, которые существуют в файловой системе?

Например:

public class MyModule:IHttpModule
{
    public void Dispose(){ }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += (o, e) => Debug.Print("Request: " + HttpContext.Current.Request.RawUrl);
    }
}

И я объявляю это так:


  

Но, даже используя предусловие, я вижу, как статические файлы проходят через модуль:

Request: /MVCX/
Request: /MVCX/Content/Site.css
Request: /MVCX/Scripts/jquery-1.4.4.min.js

Я пробовал игнорировать правила для статических файлов, но это ничего не меняет:

routes.IgnoreRoute("{Content}/{*pathInfo}");
routes.IgnoreRoute("{Scripts}/{*pathInfo}");

Так ли это обычно? Или я что-то упускаю? Насколько я знаю, на запрос статического файла должен отвечать IIS. Если мой управляемый модуль получает ответ, это означает, что поток CLR ThreadPool обрабатывает этот запрос, верно?

С уважением.

UPDATE:

Я отключил "runAllManagedModulesForAllRequests":


      

И все вроде бы работает нормально, но я нашел эту статью: http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html, которая рекомендует удалить и прочитать модуль "UrlRoutingModule-4.0" с пустым предусловием.

На моей машине, добавление этого модуля находится в корневом web.config, и он уже имеет пустое preCondition:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>type machine.config | find "UrlRouting"


C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>type web.config | find "UrlRouting"
            

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config>

Так что теперь я немного запутался, каков статус этого параметра? Должен ли я его использовать или нет? Почему он по умолчанию имеет значение "true"?

С уважением.

10
задан vtortola 5 December 2011 в 15:47
поделиться