Pregunta

Tengo el MVC Mini Profiler configurado como se describe en su página del proyecto, y las incluyen los que de hecho se están escribiendo en la página.

El problema es que mi aplicación se sienta en http://localhost:8080/web, y el marcado escrito por el Profiler incluye se ve así:

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

Todos estos, por supuesto, dan 404 errores, pero si navego a /web/mini-profiler-includes.less?, se carga bien.

La fuente que crea esa cadena se puede encontrar aquí:

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

¿Por qué no se solicita. Aplicación Path devuelve la ruta de mi aplicación? ¿Estoy haciendo algo mal o debería presentar un problema en la página MVC-Mini-Profiler?

EDITAR: Para hacer las cosas aún más extrañas, puse un punto de ruptura en el MiniProfiler.RenderIncludes() llamar y verificar cuál es el valor de HttpContext.Current.Request.ApplicationPath fue en ese momento, y fue "/web"! Muy misterioso.

Edición 2: Parece que pueden haber agregado soporte para rutas virtuales en la última versión (hace 2 horas :)), y el paquete Nuget (que es como lo instalé) no está completamente actualizado. Investigando ...

¿Fue útil?

Solución

Tirando la última fuente (este compromiso Siendo el más reciente en el momento de esta publicación), construyendo el proyecto, agarrando el DLL y haciendo referencia a eso, en lugar de usar el paquete Nuget del proyecto, solucionó el problema.

EDITAR: A partir de ahora, el paquete Nuget ahora está al día con la última confirmación, ¡así que Nuget Away!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top