2012-11-08 2 views

답변

0

Application_End가 웹 역할에서 호출되지 않는 (또는 호출되는 것처럼 보이지 않는) 이유는 모르겠지만 Application_End를 사용하여 인스턴스를 정리해야합니다. 이는 코드가 여러 번 실행되는 것을 의미 할 수 있습니다 (예 : 각 재활용). 필요하지는 않습니다.

정리 작업은 OnStop 메서드의 WebRole.cs에 있어야합니다. 그러나 계정에 계속, 당신은 a limited time for your cleanup operations 있습니다.

+1

그러나 Dispose를 호출해야하는 웹 응용 프로그램 내에 서비스 버스 가입 구성 요소가 있습니다. "WebRole"객체는 다른 프로세스에서 작동하므로 거기에서 정리할 수 없습니다. – krisdyson

+0

그리고 그것은 로깅이 그것이 아니라는 것을 드러내 기 때문에 확실히 불려지지 않습니다. – krisdyson

0

같은 문제가 발생하여 덜 이상적인 해결 방법을 설정했습니다. 영감을받은 사람은 this thread입니다. WebRole를 OnStop 처리기에서

역할 VM의 모든 응용 프로그램 풀을 재활용하기 위해 전화 :

var p = Process.Start("cmd.exe", Environment.ExpandEnvironmentVariables(@"/C %windir%\system32\inetsrv\appcmd list apppool /xml | %windir%\system32\inetsrv\appcmd.exe recycle apppool /in")); 
p.WaitForExit(); 

(당신은 확실히 당신의 웹 역할은 관리자 권한으로 실행하게하는 데 필요한 csdef에 <Runtime executionContext="elevated" />을 추가하여 WebRole 노드 바로 아래에있는 파일)

참고 : 역할 재부트와 축소 작업 모두에서 종료 코드를 테스트해야합니다. I've found that things like database connections may not work during scale-downs.

관련 문제