我已经按照其project page所述设置了MVC Mini Profiler,并且包含的​​内容确实在页面上。

问题是,我的应用程序位于http://localhost:8080/web,并且探查器编写的标记包括以下内容:

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

当然,所有这些都会产生404错误,但是如果我导航到/web/mini-profiler-includes.less?,它将很好地加载。

创建该字符串的源可以在here中找到:
// 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
}

为什么Request.ApplicationPath不返回我的应用程序的路径?我是在做错什么,还是应该在mvc-mini-profiler页面上提交问题?

编辑:为了使事情变得更奇怪,我在MiniProfiler.RenderIncludes()调用上设置了一个断点,并检查了那时HttpContext.Current.Request.ApplicationPath的值是什么,它是"/web"!非常神秘。

编辑2 :看起来他们可能已在最新版本(2小时前:)中添加了对虚拟路径的支持,并且NuGet软件包(这是我的安装方式)尚未完全更新。正在调查...

最佳答案

提取最新资源(this commit是本文发布时的最新资源),构建项目,获取DLL并引用该资源,而不是使用项目的NuGet包解决了该问题。

编辑:到目前为止,NuGet软件包现在是最新的最新提交,因此,NuGet可以了!

关于asp.net - MVC Mini Profiler包括不遵守应用程序的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6308890/

10-09 00:16