Mvc Mini Profiler + ASP.NET PageMethods不更新

时间:2011-08-03 18:25:38

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

我正在使用强大的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做到这一点而不用任何其他方式重新加载页面。

1 个答案:

答案 0 :(得分: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 javascript包含调用MiniProfiler.fetchResultsExposed(ids);并且一切正常运作