Frage

Ich habe den MVC Mini -Profiler wie in seiner beschrieben eingerichtet Projektseite, und die Einschlüsse werden in der Tat auf der Seite geschrieben.

Problem ist, meine Bewerbung liegt bei http://localhost:8080/web, und das vom Profiler geschriebene Markup sieht Folgendes aus:

<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>

Dies all das geben natürlich 404 Fehler, aber wenn ich navigiere zu /web/mini-profiler-includes.less?, es lädt gut.

Die Quelle, die diese Zeichenfolge erstellt, kann gefunden werden hier:

// 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
}

Warum wird Request.ApplicationPath nicht den Pfad meiner Anwendung zurückgeben? Mache ich etwas falsch oder sollte ich ein Problem auf der Seite MVC-Mini-Pro-For-Philer-Seite einreichen?

BEARBEITEN: Um die Dinge noch seltsamer zu machen, habe ich einen Haltepunkt auf die MiniProfiler.RenderIncludes() Rufen Sie an und überprüfen Sie, wie der Wert der Wert ist HttpContext.Current.Request.ApplicationPath war in diesem Moment und es war es "/web"! Sehr mysteriös.

Bearbeiten 2: 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 (wie ich es installiert habe) ist nicht ganz auf dem neuesten Stand. Untersuchung ...

War es hilfreich?

Lösung

Ziehen Sie die neueste Quelle (dieses Commit Als jüngste zum Zeitpunkt dieses Beitrags) wurde das Projekt aufgebaut, die DLL gepackt und darauf hingewiesen, dass das Nuget -Paket des Projekts das Problem behoben hat.

BEARBEITEN: Ab sofort ist das Nuget -Paket jetzt mit dem neuesten Commit auf dem neuesten Stand, also Nuget weg!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top