我正在使用超棒的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);
,一切都可以正常进行