我正在使用强大的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做到这一点而不用任何其他方式重新加载页面。
答案 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);
并且一切正常运作