【问题标题】:Mvc Mini Profiler + ASP.NET PageMethods not updatingMvc Mini Profiler + ASP.NET PageMethods 未更新
【发布时间】:2013-01-03 15:25:17
【问题描述】:

我正在使用很棒的 MVC Mini Profiler 并尝试分析一些 PageMethods。 问题是结果仅在页面重新加载时显示。

在 PageMethods 响应标头上,我可以看到“X-MiniProfiler-Ids”ID 的累积,这意味着 Profiler 正在做这件事,现在我想在不重新加载页面的情况下查看这些结果。

一种解决方案是访问 PageMethod 本身的响应标头as explained here。 这根本不起作用。在var req = PageMethods.DoWork(callback); 中,req 以未定义的形式结束。

我也尝试创建一个新的 PageMethod (HttpContext.Current.Response.Headers["X-MiniProfiler-Ids"]) 来返回响应头,但正如我想象的那样,它没有用 因为响应头还没有完全构建(我想)。

我想做的是找到一种方法,要么从标题中获取分析器会话的 ID,要么让 Mini Profiler 完成它的工作,而无需以任何其他方式重新加载页面。

【问题讨论】:

  • 您使用的是什么版本的分析器? mvc mini profiler 应该挂钩到来自 Asp Ajax 框架的结束请求方法。我认为该功能是在 1.6 中添加的。或者,你有我可以查看的样本,看看我是否可以让它工作。
  • 我正在使用最新版本,1.7。我正在发布我发现的解决方法

标签: jquery asp.net ajax mvc-mini-profiler


【解决方案1】:

好的,我让它工作了,我完全抛弃了 asp.net 默认的 PageMethods,而只使用 jquery ajax。有了上面的内容,我可以在没有 ScriptManager 开销的情况下做与 asp.net PageMethods 几乎相同的操作

function PageMethod(UrlMethod, callback) {
    return $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: '{}',
        dataType: 'json',
        url: UrlMethod,
        success: function (result, status, xhr) {
            FetchProfilerResults(xhr.getResponseHeader("X-MiniProfiler-Ids"));
            callback(result.d);
        }
    });
}

FetchProfilerResults 只是抓取并解析 miniProfiler IDS 并从 miniprofiler javascript 中调用 MiniProfiler.fetchResultsExposed(ids);,一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多