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.