MiniProfiler не может найти jquery

Я использую MiniProfiler для измерения производительности сайта. Когда я обновился с версии 1.9 до 2.0, он перестал работать. Я изменил пространство имен с MvcMiniProfiler на StackExchange.Profiling. Но когда я загружаю страницу, fiddler показывает, что ошибка 404 для следующего запроса:

GET /local/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA= HTTP / 1.1

Это предотвращает отображение результатов на странице.

Чтобы заставить работать версию 1.9 MiniProfiler, мне нужно было иметь следующие записи в файле Web.Config (как описано в этом посте):

  <system.webServer>
    <handlers>
      <add name="UrlRoutingModule1" path="mini-profiler*.js" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
      <add name="UrlRoutingModule2" path="mini-profiler*.css" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
      <add name="UrlRoutingModule3" path="mini-profiler*.tmpl" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
    </handlers>
  </system.webServer>

Я пытался заставить MiniProfiler 2.0 работать с теми, которые включены в файл конфигурации, и исключил их, ни один способ не работал.

Это работает на моей машине разработки в IIS Express.

Мое приложение представляет собой приложение WebForms, которое использует безопасность форм.

Как мне решить это?

6 ответов

Решение

Похоже, что это распространенная проблема, просто добавьте это в web.config, и все должно быть хорошо

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

<system.webServer>
...
  <handlers>
    <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
  </handlers>
</system.webServer>

Для меня это начинает работать, когда я пишу следующий код

 protected void Application_EndRequest()
        {
            MiniProfiler.Stop();
        }

вместо

 protected void Application_End(object sender, EventArgs e)
        {
            //  Code that runs on application shutdown
        MiniProfiler.Stop();
        }

В итоге мне пришлось создать на моем сервере папку mini-profiler-resources для вызова папки, а затем скопировать в нее все файлы из StackExchange.Profiling/UI. Не уверен, почему это работает, хотя. Я предполагаю, что мне не хватает некоторых настроек сервера, потому что мне нужно было сделать это только в производственной системе. Все отлично работало из коробки для разработки.

Я не знаю про ASP.NET, но в Rails я решил это, удалив файлы tmp/miniprofiler. Когда я перезагрузил страницу, это работает.

Чтобы это исправить, мне пришлось изменить DefaultAppPool с Classic на Integrated.

Это решило проблему.

Кроме того, поскольку я использую MVC4, мне пришлось скачать исходные коды MiniProfiler и скомпилировать их с библиотеками MVC4.

Попробуйте перерегистрировать ASP.NET, запустив aspnet_regiis -i из соответствующей папки.NET Framework в вашем каталоге Windows\Microsoft.NET. У меня были похожие проблемы, которые были решены путем перерегистрации обработчиков ASP.NET.

Я думаю, что у меня возникла эта проблема после установки функции статического обслуживания файлов в IIS после установки.NET Framework.

Другие вопросы по тегам