Запуск MiniProfiler с параметром runAllManagedModulesForAllRequests, установленным в false

Недавно мы обновили MiniProfiler до версии 2.0.1 с v1.7, и с тех пор мы не смогли использовать его на нашем веб-сайте MVC3, потому что когда он пытается получить свои ресурсы, он получает 404.

Пример вызова ресурса: /mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=

В поисках вокруг, большинство людей предлагают, что просто настройка runAllManagedModulesForAllRequests должен быть установлен в true, Для хихиканья я пошел вперед и установил его на true, и да, это сработало. Но это не приемлемый ответ.

Как я могу сохранить runAllManagedModulesForAllRequests=false и все еще используете MiniProfiler v2?

3 ответа

Решение

У меня была та же проблема - запрашиваемые ресурсы используют "статические" расширения файлов (такие как .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.

У меня была похожая проблема, и я решил исправить пул приложений на "интегрированный", а затем добавил эту новую строку ниже в свой файл 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>

Как говорит Дэвид Даффет в комментариях к принятому ответу, вам также может понадобиться добавить следующую запись в вашу веб-конфигурацию. Это сработало для меня:

<system.web>
    <httpHandlers>
      <add verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
    </httpHandlers>
</system.web>
Другие вопросы по тегам