Запуск MiniProfiler с runAllManagedModulesForAllRequests установлен на false
Недавно мы обновили версию MiniProfiler версии 2.0.1 с версии v1.7, и с тех пор мы не смогли использовать ее на нашем веб-сайте MVC3, потому что, когда она пытается получить свои ресурсы, вместо этого она получает 404.
Пример вызова ресурса:/mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA =
При поиске вокруг большинство людей полагают, что для установки runAllManagedModulesForAllRequests
следует установить значение true
. Для хихиканья я пошел вперед и установил, что это правда, и да, это действительно сработало. Но это не приемлемый ответ.
Как я могу сохранить runAllManagedModulesForAllRequests=false
и все еще использовать MiniProfiler v2?
Ответы
Ответ 1
У меня была такая же проблема - запрашиваемые ресурсы используют "статические" расширения файлов (например, .js
), и поэтому IIS хочет обработать их с помощью своего статического обработчика файлов.
К счастью, все ресурсы MiniProfiler запрашиваются с помощью пути mini-profiler-resources
, поэтому вы можете добавить следующее к своему web.config
:
<system.webServer>
...
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>
В приведенной выше инструкции IIS указывается, что любой запрос для маршрута mini-profiler-resources
, который должен быть маршрутизирован через ASP.NET.
Ответ 2
Как говорит Дэвид Даффет в комментариях в принятом ответе, вам также может потребоваться добавить следующую запись в свою веб-конфигурацию. Это сработало для меня:
<system.web>
<httpHandlers>
<add verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
</httpHandlers>
</system.web>
Ответ 3
У меня была аналогичная проблема, и я решил ее исправить, изменив пул приложений на "интегрированный", а затем добавил эту новую строку ниже в свой web.config и затем работал.
Вот как выглядит теперь весь web.config для мини-профилировщика.
<system.webServer>
<modules runAllManagedModulesForAllRequests="false" />
<validation validateIntegratedModeConfiguration="false"/> <!-- Here is the new line -->
<handlers>
<add name="MiniProfiler" verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
</handlers>
</system.webServer>