Вопрос по asp.net-mvc-3 – Запуск MiniProfiler с параметром runAllManagedModulesForAllRequests, установленным в false

47

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

An example resource call is: /mini-profiler-resources/includes.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=

В поисках вокруг, большинство людей предлагают, что просто настройкаrunAllManagedModulesForAllRequests должен быть установлен вtrue, Для хихиканья я пошел вперед и установил его на true, и да, это сработало.But that is not an acceptable answer.

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

Я думаю, что самый чистый дизайн, к которому мы можем перейти, - это одна конечная точка, которая обслуживает все, например: /mini-profiler-handler?jquery.js&kfslsfjklskd и т. Д.community.miniprofiler.com Sam Saffron
Спасибо @Adam ... опубликовал его Sam Saffron
Кажется, этот пост говорит о той же проблеме:stackoverflow.com/q/10212725/498969 Код, который я вытащил, был из вашего пакета nuget, поэтому я не могу подтвердить проблему из транка в данный момент. Версия 2 больше не требует, чтобы я регистрировал эти три обработчика (miniProfilerJS, miniProfilerCSS, miniProfilerTmpl), верно? Вы обходите это, регистрируя маршруты из MiniProfilerHandler? Adam Spicer
@ SamSaffron, похоже, что ответ Дэвида ниже работает! Я добавил информацию в вашу КБ вcommunity tracker. Adam Spicer
хорошо ... нам нужно выяснить, что сломалось первым, багажник имеет ту же проблему? Я знаю, что в прошлом были запросы обслуживать вещи без расширения, чтобы обойти это Sam Saffron

Ваш Ответ

3   ответа
74

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

Error: User Rate Limit Exceededminiprofiler.com сайт.
Error: User Rate Limit Exceeded
Глубокие изменения в .NET 4.5 в настоящее время требуют от нас добавления регистрации обработчика, о которой @David упоминает как обходной путь. настройкаrunAllManagedModulesForAllRequests=true не решает проблему.
Error: User Rate Limit Exceeded
Хм ... если вы работаете в классическом режиме, то, возможно, вы могли бы добавить аналогичную запись в & lt; system.web & gt; & lt; httpHandlers & gt ;. Я полагаю, что формат - то же самое исключение, возможно, оставьте вне атрибутов resourceType и preCondition.
0

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

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

<system.web>
    <httpHandlers>
      <add verb="*" type="System.Web.Routing.UrlRoutingModule" path="mini-profiler-resources/*"/>
    </httpHandlers>
</system.web>

Похожие вопросы