2012-03-22 5 views
20

단일 페이지 자바 스크립트 응용 프로그램 (JavascriptMvc 사용)과 ASP.NET MVC3 (NServiceMVC 사용) 위에 빌드 된 REST 서비스 백엔드가 있습니다.단일 페이지 웹 앱/REST 백엔드에서 MiniProfiler를 사용하려면 어떻게해야합니까?

REST 서비스에는 MiniProfiler가 설치되어 실행 중이며 X-MiniProfiler-Ids 헤더가 각 AJAX 요청과 함께 돌아옵니다. 나는 실제로 미니 프로 파일러를 실행하고 작동 시키지만, 이것에 대한 정보는 찾을 수 없으므로 올바른 방법을 사용하고 있는지 확실하지 않습니다.

지원되는 시나리오입니까? 지금이 방법이 있습니까?


는 내가 현재하고있는 중이 야하는 것은 이것이다 :는 HTML 응용 프로그램에서

(모든 정적 코드, 아니 동적 물건이다), 내가 가진 내 MVC 응용 프로그램에서

<script type="text/javascript" src="/api/profiler"></script> 

, 내가 가진 :

public ActionResult Profiler() 
    { 
     if (!ControllerContext.HttpContext.IsDebuggingEnabled) 
     { 
      return new EmptyResult(); 
     } 
     return new ContentResult() { 
      Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
         position: RenderPosition.Right, 
         showControls: true 
        ) 
         .ToString() 
         .Replace("<script type=\"text/javascript\">", "") 
         .Replace("</script>", "") 
     }; 
    } 

는 분명히, 하드 <script> 태그를 제거하기 위해 여기에 해킹이있다.

이외의 나머지 MVC 측에서는 프로파일 러가 평소와 똑같이 사용됩니다. 앱에서 REST 호출이 발생하는 동작을 수행하면 miniprofiler가이를 나타냅니다. showControls:true 매개 변수를 사용하면 클리어 버튼이 너무 유용합니다. 그렇지 않으면 전체 페이지가 본질적으로 새로 고침되지 않으므로 상수 목록을 얻을 수 있기 때문입니다.

이렇게하는 것이 올바른 방법입니까, 아니면 더 좋은 방법입니까?

+0

솔루션은 작동하지만 모범 사례를 따르고 있다는 확인을 원하십니까? –

+0

@KirkWoll 예. 프로파일 러에 관한 많은 문서가 없기 때문에 기존 솔루션을 간과하고 있는지 알고 싶습니다. 최악의 경우이 질문은 향후 웹 검색을위한 문서를 제공 할 수 있습니다. 이것이 "최상의"방법이라면 나는 패치를 제출하여'.replace()'해킹을하지 않아도되고 이것이 진정한 "공식적인"방법이되도록 할 것이다. – gregmac

+0

나는 동일한 질문이있다. 아직도 이런 식으로하고 있니? – Jerry

답변

1

@ MiniProfiler.RenderIncludes()가 javascript를 사용하여 모든 내용을 생성한다는 가정이 코드에 있습니다. 그것이 현재의 유효한 가정 일지 모르지만 이것은 바뀔 수 있습니다.

왜 단순히 해킹을 피하고 아약스 요청을 사용하여 프로필러를로드하지 않는 것이 좋을까요? 어느 시나리오에서든 Ajax이든 내장 된 스크립트이든, 콜백을 통해 프로파일 러를 삽입하면 프로파일 링의 결과에 다소 영향을 미칩니다.