3

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

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

一种解决方案是访问 PageMethod 本身的响应标头,如此处所述。这根本不起作用。在var req = PageMethods.DoWork(callback);, req 最终未定义。

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

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

4

1 回答 1

2

好的,我让它工作了,我完全抛弃了 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.fetchResultsExposed(ids);来自 miniprofiler javascript 的调用,一切正常

于 2011-08-15T20:38:55.163 回答