2011-08-03 33 views
3

我使用了令人敬畏的MVC Mini Profiler,並試圖分析一些PageMethods。 問題是結果僅在頁面重新加載時顯示。Mvc Mini Profiler + ASP.NET PageMethods不更新

在PageMethods響應標題上,我可以看到'X-MiniProfiler-Ids'Id的堆積,這意味着Profiler正在做它的事情,現在我希望看到這些結果而不重新加載頁面。

一個解決方案是訪問PageMethod本身的響應標頭,as explained here。 這完全沒有用。在var req = PageMethods.DoWork(callback);,請求結束爲未定義。

我也嘗試創建一個新的PageMethod的(HttpContext.Current.Response.Headers["X-MiniProfiler-Ids"])返回的響應頭,但像我想象,沒有工作 爲響應頭還沒有完全建(我想)。

我想要做的是找到一種方法,從頭文件中獲取Profiler會話的ID,或者讓Mini Profiler做到這一點,而無需重新加載頁面。

+0

您使用的是哪個版本的分析器? mvc mini profiler應該從Asp Ajax框架中掛鉤到最終請求方法中。我認爲功能是添加了1.6。或者,你是否有我可以看看的樣本,看看我能否得到它的工作。 –

+0

我正在使用最新版本,1.7。我正在發佈我找到的解決方法 –

回答

2

好吧,我得到它的工作,我拋棄了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);包括和一切工作愉快