2011-08-03 2 views
3

멋진 MVC 미니 프로파일 러를 사용 중이며 일부 PageMethod를 프로파일 링하려고합니다. 문제는 결과가 페이지를 다시로드 할 때 표시된다는 것입니다.Mvc 미니 프로파일 러 + ASP.NET PageMethods가 업데이트되지 않습니다.

PageMethods 응답 헤더에 'Profiler가 그 일을하고 있음을 의미하는'X-MiniProfiler-Ids 'ID의 빌드가 표시 될 수 있습니다. 이제 해당 페이지를 다시로드하지 않고도 그 결과를보고 싶습니다.

하나의 해결책은 PageMethod 자체의 응답 헤더 인 as explained here에 액세스하는 것입니다. 이것은 전혀 작동하지 않았습니다. var req = PageMethods.DoWork(callback);에서 req는 정의되지 않은 것으로 끝납니다.

응답 헤더를 반환하기 위해 새로운 PageMethod (HttpContext.Current.Response.Headers["X-MiniProfiler-Ids"])를 만들려고했으나 상상해 보았 듯이 응답 헤더가 완전히 구축되지 않았기 때문에 상상하지 못했습니다 ( ).

내가하고 싶은 일은 헤더에서 프로파일 러 세션의 ID를 얻는 방법을 찾거나 다른 방법으로 페이지를 다시로드하지 않고 미니 프로파일 러를 사용하는 것입니다.

+0

어떤 프로파일 러 버전을 사용하고 있습니까? mvc 미니 프로파일 러는 Asp Ajax 프레임 워크의 끝 요청 메소드에 연결되어야합니다. 나는이 기능이 1.6으로 추가되었다고 생각한다. 또는 내가 볼 수있는 샘플을 가지고 있으며 작동시킬 수 있는지 확인하십시오. –

+0

나는 최신 버전 1.7을 사용하고있다. 내가 찾은 해결책을 게시하고 있습니다. –

답변

2

좋아, 나는 그것을 가지고있어, asp.net 기본 PageMethods completly 던져 jquery 아약스 대신 전적으로 사용하고 있습니다. 위의와 나는 스크립트 관리자 오버 헤드없이 거의 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 자바 스크립트에서 MiniProfiler.fetchResultsExposed(ids); 호출을 포함하고 모두가 행복하게

을하고있다