Question

J'ai le MVC Mini Profiler configuré comme décrit sur sa page , et includes sont en effet écrit sur la page.

Le problème est, ma demande se trouve à http://localhost:8080/web, et le balisage écrit par le profileur comprend ressemble à ceci:

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

Ces tous donnent cours 404 erreurs, mais si je navigue à /web/mini-profiler-includes.less?, il charge très bien.

La source qui crée cette chaîne se trouve ici :

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

Pourquoi ne retourne pas Request.ApplicationPath le chemin de ma demande? Ai-je fait quelque chose de mal, ou devrais-je déposer une question sur la page mvc-mini-profileur?

EDIT: Pour rendre les choses encore plus étrange, je mets un point d'arrêt sur l'appel MiniProfiler.RenderIncludes() et vérifié ce que la valeur de HttpContext.Current.Request.ApplicationPath était à ce moment-là, et il était "/web"! Très mystérieux.

EDIT 2 : On dirait qu'ils ont ajouté le support pour les chemins virtuels dans la dernière version (il y a 2 heures :)), et le paquet NuGet (ce qui est la façon dont je l'ai installé) n'est pas complètement à jour. Enquête ...

Était-ce utile?

La solution

Tirer la dernière source ( ce commettre étant la plus récente au moment de ce post), la construction du projet, en saisissant la DLL et le référencement qu'au lieu d'utiliser le package NuGet fixe du projet le problème.

EDIT : En ce moment, le paquet NuGet est maintenant à jour avec la dernière commettras, donc NuGet loin

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top