Ich habe den MVC Mini Profiler eingerichtet, wie auf seiner Projektseite beschrieben, und die Einbindungen werden tatsächlich auf der Seite geschrieben.
Das Problem ist, meine Anwendung befindet sich unter http://localhost:8080/web
, und das Markup, das vom Profiler generiert wird, sieht so aus:
jQuery(function() { MiniProfiler.init({ id:'fb4dc30e-c1aa-4be6-902c-ef2812dd1fe2', renderDirection:'left' }); } );
All diese Links führen natürlich zu 404-Fehlern, aber wenn ich zu /web/mini-profiler-includes.less?
navigiere, wird es korrekt geladen.
Der Quellcode, der diesen String erstellt, kann hier gefunden werden:
// MiniProfilerHandler.cs
///
/// Versteht, wie man MiniProfiler-UI-Urls routet und darauf reagiert.
///
public class MiniProfilerHandler : IRouteHandler, IHttpHandler
{
internal static HtmlString RenderIncludes(MiniProfiler profiler, RenderPosition? position = null, bool showTrivial = false, bool showTimeWithChildren = false)
{
const string format =
@"
jQuery(function() {{ MiniProfiler.init({{ id:'{2}', path:'{0}', renderDirection:'{3}', showTrivial: {4}, showChildrenTime: {5} }}); }} ); ";
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
}
Warum liefert Request.ApplicationPath nicht den Pfad meiner Anwendung zurück? Mache ich etwas falsch, oder sollte ich ein Problem auf der mvc-mini-profiler Seite melden?
BEARBEITEN: Um die Dinge noch merkwürdiger zu machen, habe ich einen Haltepunkt beim MiniProfiler.RenderIncludes()
Aufruf gesetzt und überprüft, was der Wert von HttpContext.Current.Request.ApplicationPath
zu diesem Zeitpunkt war, und es war "/web"
! Sehr mysteriös.
BEARBEITEN 2: Es sieht so aus, als hätten sie in der neuesten Version (vor 2 Stunden :)) Unterstützung für virtuelle Pfade hinzugefügt, und das NuGet-Paket (über das ich es installiert habe) ist nicht ganz auf dem neuesten Stand. Ich werde das untersuchen...