Domanda

Ho il MVC Mini Profiler impostata come descritto sulla sua pagina di , e includes vengono effettivamente scritto sulla pagina.

Il problema è, la mia domanda si siede a http://localhost:8080/web, e la marcatura scritto dal profiler comprende simile a questo:

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

Questi tutti, naturalmente, dare errori 404, ma se ci si dirige verso /web/mini-profiler-includes.less?, carica bene.

La fonte che crea la stringa può essere trovato qui :

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

Perché non Request.ApplicationPath tornando il percorso della mia applicazione? Sto facendo qualcosa di sbagliato, o forse dovrei presentare un problema nella pagina MVC-mini-profiler?

Modifica Per rendere le cose ancora più strano, ho messo un punto di interruzione sulla chiamata MiniProfiler.RenderIncludes() e controllato quale sia il valore di HttpContext.Current.Request.ApplicationPath era in quel momento, ed è stato "/web"! Molto misterioso.

Modifica 2 : Sembra che essi possono avere aggiunto il supporto per percorsi virtuali nella versione più recente (2 ore fa :)), e il pacchetto NuGet (che è come l'ho installato) non è del tutto aggiornato. Indagare ...

È stato utile?

Soluzione

Tirare l'ultima fonte ( questo commit è il più recente al momento di questo post), la costruzione del progetto, afferrando la DLL e riferimento che invece di utilizzare il pacchetto NuGet del progetto ha risolto il problema.

Modifica :! A partire da ora, il pacchetto NuGet è ora aggiornato con l'ultimo commit, così NuGet via

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top