2013-03-24 2 views
3

Glimpse (Glimpse MVC4) 및 MiniProfiler (EF 지원)를 설치했습니다.Application_BeginRequest() 중에 Glimpse가 실행 중인지 확인합니다.

필자도 Glimpse 용 MiniProfiler 플러그인을 설치했습니다.

나는 모든 유선 작업을하고 있습니다. MiniProfiler가 프로파일 링을 시작해야 하는지를 결정하기 위해 Glimpse의 구성을 허용하고 싶습니다. Glimpse가 활성화되어 있다면 (Glimpse.axd를 통해 구성 설정을 통하지 않고) Application_BeginRequest() 메소드에서 MiniProfiler.Start()를 호출하려고합니다. 따라서 다음과 같은 내용이 있습니다 :

protected void Application_BeginRequest() 
{ 
    if (Glimpse.IsRunning) 
    { 
     MiniProfiler.Start(); 
    } 
} 

Glimpse가 활성화되어 있는지 확인하는 방법이 있습니까?

답변

5

기술적으로는 방법이 있지만 최고라고해도 좋을 것 같습니다. 나는 그것이 당신의 목적에 잘 맞는지를 결정하게 할 것입니다.

var policyString = HttpContext.Current.Items["__GlimpseRequestRuntimePermissions"].ToString(); 
RuntimePolicy glimpsePolicy; 
RuntimePolicy.TryParse(policyString, out glimpsePolicy); 

if (!glimpsePolicy.HasFlag(RuntimePolicy.Off)) 
{ 
    MiniProfiler.Start(); 
} 

엿볼 요청의 시작 부분에 On을 할 수 있지만, 그것이 될 수 있기 때문에 해킹은 내가 부르는 이유는 나중에 Off를 돌렸다.

이 동작의 예로는 ASP.NET에서 이미지와 같이 지원되지 않는 미디어 유형을보고하기 시작하면 Glimpse가 자동으로 종료됩니다. ASP.NET에는 HTTP 처리기가 실행될 때까지 미디어 유형을 알 수있는 기능이 없습니다. 이 경우 Glimpse는 요청 시작시 켜져 있다고 말하지만 끝나면 꺼집니다.

+2

MiniProfiler를 사용하면 각 요청에 대한 타이밍 정보를 기록한 다음 'MiniProfiler.Stop (discardResults : someValueThatKnowsIfGlimpseWasTurnedOffDuringTheRequest);'을 사용하여 요청을 끝내거나 유지하도록 선택할 수 있습니다. –

+0

완벽! 'SomeValueThatKnowsIfGlimpseWasTurnedOffDuringTheRequest'를 똑같은 방식으로 보게 할 수 있습니다. 단지'Application_EndRequest'에서 할 수 있습니다. – nikmd23

+0

내 관심사는, MiniProfiler의 오버 헤드가 전혀 필요 없다는 것입니다. 전체 디버깅을 가능하게하기 위해 Glimpse의 on/off 상태를 사용하고 싶습니다 ... 사이트가 프로덕션 서버에있는 동안. 사이트에서 많은 트래픽을 볼 수는 없지만 오버 헤드를 절약하고 싶습니다. – Paul