我正在使用超棒的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做到这一点而无需以其他任何方式重新加载页面的方法。

最佳答案

好的,我正常工作了,我完全放弃了asp.net默认的PageMethods,而是只使用了jquery ajax。有了以上内容,我可以做的几乎与asp.net PageMethods相同,而无需ScriptManager开销

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);,一切都可以正常进行

07-24 09:43