Запретить IIS обслуживать статические файлы через конвейер ASP.NET - PullRequest
30 голосов
/ 08 июня 2011

Запросы на мои css, js, файлы изображений обслуживаются через конвейер ASP.NET.Я думал, что IIS по умолчанию избегает этого, но я вижу запросы на моей Application_AuthenticateRequest точке останова, и нет необходимости фактически проверять подлинность этих запросов.Я видел противоречивые подходы, чтобы изменить это поведение - Каков наилучший способ сделать это?

Ответы [ 4 ]

35 голосов
/ 09 июня 2011

Я предполагаю, что в вашем файле web.config настроены следующие параметры:

<modules runAllManagedModulesForAllRequests="true">

Это означает, что каждый запрос, включая запросы на статическое содержимое, попадает в конвейер..

Измените этот параметр на:

<modules runAllManagedModulesForAllRequests="false">

Предполагается, что ваше приложение работает под управлением ASP.NET 4.0 и MVC3.

Чтобы это работало, необходимо установить KB980368 (требуется перезагрузка) или Windows 2008R2 SP1 (с этим исправлением).Причина этого объясняется в этой замечательной статье:

Как работает маршрутизация ASP.NET MVC и ее влияние на выполнение статических запросов

12 голосов
/ 11 июня 2011

В итоге я добавил это в свой web.config. Я знаю, что все мои статические файлы будут находиться в этих папках, поэтому они отлично работают для моих нужд.

<location path="scripts">
    <system.web>
        <authentication mode="None" />
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
<location path="styles">
    <system.web>
        <authentication mode="None" />
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
<location path="images">
    <system.web>
        <authentication mode="None" />
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
1 голос
/ 18 ноября 2014

В VS2012 / MVC3 с включенным Visual Studio Development Server RAMMFAR = false не действует. Каждый запрос статических файлов все еще попадает в обработчик событий Application_BeginRequest.

Я переключился на IIS Express и увидел нужные функции.

0 голосов
/ 08 июня 2011

Где-то в вашей конфигурации IIS или в файле web.config вы настроили отображение обработчика для сопоставления этих файлов с вашим приложением ASP.Net.

Попробуйте удалить ваш web.config и посмотрите,все еще можно просматривать файлы этих типов из IIS без ASP.Net.Если это не удастся, вы будете знать, что это ваш web.config - в противном случае вам придется проверить настройки IIS.

Шаг 2. Положите файл web.configs обратно, затем удалите и заново создайте сайт - та же проблема?Это параметр в корне IIS, который означает, что он применяется ко всем сайтам - проверьте сопоставления обработчиков здесь.

...