MVC Mini Profiler включает в себя не уважение пути приложения
-
26-10-2019 - |
Вопрос
У меня установлен MVC Mini Profiler, как описано на его Проектная страница, и включение действительно написано на странице.
Проблема в том, что мое приложение находится в http://localhost:8080/web
, и наценка, написанная профилировкой, включает в себя выглядит так:
<link rel="stylesheet/less" type="text/css" href="/mini-profiler-includes.less?v=2.0.4177.17902">
<script type="text/javascript" src="/mini-profiler-includes.js?v=2.0.4177.17902"></script>
<script type="text/javascript"> jQuery(function() { MiniProfiler.init({ id:'fb4dc30e-c1aa-4be6-902c-ef2812dd1fe2', renderDirection:'left' }); } ); </script>
Все это, конечно, дают 404 ошибки, но если я перейду к /web/mini-profiler-includes.less?
, он загружается нормально.
Источник, который создает эту строку, можно найти здесь:
// MiniProfilerHandler.cs
/// <summary>
/// Understands how to route and respond to MiniProfiler UI urls.
/// </summary>
public class MiniProfilerHandler : IRouteHandler, IHttpHandler
{
internal static HtmlString RenderIncludes(MiniProfiler profiler, RenderPosition? position = null, bool showTrivial = false, bool showTimeWithChildren = false)
{
const string format =
@"<link rel=""stylesheet/less"" type=""text/css"" href=""{0}mini-profiler-includes.less?v={1}"">
<script type=""text/javascript"" src=""{0}mini-profiler-includes.js?v={1}""></script>
<script type=""text/javascript""> jQuery(function() {{ MiniProfiler.init({{ id:'{2}', path:'{0}', renderDirection:'{3}', showTrivial: {4}, showChildrenTime: {5} }}); }} ); </script>";
var pos = position ?? (MiniProfiler.Settings.RenderPopupButtonOnRight ? RenderPosition.Right : RenderPosition.Left);
var result = profiler == null ? "" : string.Format(format,
EnsureEndingSlash(HttpContext.Current.Request.ApplicationPath),
MiniProfiler.Settings.Version,
profiler.Id,
pos.ToString().ToLower(),
showTrivial ? "true" : "false",
showTimeWithChildren ? "true" : "false");
return new HtmlString(result);
}
// rest of the code
}
Почему request.applicationPath возвращает путь моего приложения? Я делаю что-то не так, или я должен подать проблему на странице MVC-Mini-Profiler?
РЕДАКТИРОВАТЬ: Чтобы сделать вещи еще более странными, я поставил точку останова на MiniProfiler.RenderIncludes()
позвонить и проверить, что значение HttpContext.Current.Request.ApplicationPath
был в тот момент, и это было "/web"
! Очень загадочно.
Редактировать 2: Похоже, они могли добавить поддержку виртуальных путей в последней версии (2 часа назад :)), а пакет Nuget (как я его установил) не полностью обновлен. Расследование ...
Решение
Вытягивая последний источник (этот коммит Будучи самым последним на момент времени этого поста), создание проекта, захватывая DLL и ссылаясь на то, что вместо использования пакета проекта Nuget исправил проблему.
РЕДАКТИРОВАТЬ: На данный момент пакет Nuget теперь обновлен с последним коммитом, так что Nuget Away!