Запуск 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>