2012-02-19 4 views
6

우리는 IO 스레드 등에 대한 많은 완료와 함께 과도하게 비동기적인 작업 부하를 실행하는 Azure 작업자 역할을 가지고 있습니다.처리되지 않은 예외가 찢어지지 않도록하기 Azure 작업자 역할

때때로 우리가 소유하지 않은 비동기 콜백에서 처리되지 않은 예외가 발생합니다. 이것은 차례로 역할을 실패하게 만듭니다.

비 푸른 ASP.NET 응용 프로그램에서

, 우리는 다음과 같이 aspnet.config에 기존 처리되지 않은 예외 정책을 사용하여이를 방지 할 수 있습니다

<configuration> 
    <runtime> 
    <legacyUnhandledExceptionPolicy enabled="1" /> 
    <runtime> 
<configuration> 

애저 노동자에 대해 동일한 할 수있는 방법이 있나요 역할? 우리는 이것을 role 프로젝트의 app.config에 넣으려고했으나 작동하지 않았습니다. (아마도 WaWorkerHost.exe.config로 가져와야하기 때문입니다).

우리는 AppDomain.CurrentDomain.UnhandledExceptionApplication.SetUnhandledExceptionModeHow to catch an unhandled exception in Windows Azure (Worker) Role을 알고 있으며 이것으로 문제가 해결되지는 않습니다.

+0

아직도 답변을 원합니다! – ionwarp

답변

0

스레드를 읽는 것만으로도 webrole을 경험할 수 있습니다. 이제 코드 스 니펫을 추가하고이 오류가 다시 발생하는지 확인합니다. AppDomain 클래스에 대한 조사를 수행 했습니까 : http://msdn.microsoft.com/en-us/library/system.appdomain.aspx. 사실 나는 처리되지 않은 예외 정책을 찾고 있었지만 찾지 못했습니다. 하지만 이벤트 "UnhandledException"http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx을 발견했습니다.

하지만 당신은 이것을 작성하지 않았습니다. 왜냐하면 나중에 나에게도 타격을 입을 것입니다 - 저는 푸른 노동자 역할에서 제 3 자 공개 소스 구성 요소를 실행할 것입니다 - 저는 약간의 연구를했습니다.

세 번째 pary 코드에 대한 새 AppDomain을 만들려고합니다. 예외가 발생하면 새로 만든 AppDomain을 충돌/언로드하고 현재 코드를 실행하지 않습니다. 다른 솔루션은 아마도 새로운 과정, 나는 더 많은 일을하고 있다고 생각합니다.

EDIT : 이 주제에 대해 다시 살펴 보았습니다. 버전 2.0에서는 스레드 (메인 스레드가 아닌)가 클래스 라이브러리에서 오류가 발생하는 경우 응용 프로그램 도메인을 해체하기 위해 도입되었습니다. 그것은 별도의 ApplicationDomain도 도움이되지 않는 것 같습니다. 이 디자인은 라이브러리 수준에서 예외를 잡아 적절하게 처리하여 라이브러리에 숨겨진 오류를 디버깅하는 데 도움이된다는 것을 이해했습니다. 그러나 나를 괴롭히는 것 - 우리가 통제 할 수없는 서드 파티 클래스 라이브러리를 사용하면 어떻게 될까? 그렇다면 공급 업체가 우리에게 필요한 시간 내에 문제를 해결할 수 있도록 문제가 작 으면 우리는 붙어있는 것 같습니다.

+0

Marc, 가능한 한 더 나은 대답을 원합니다. appdomains 관리가 필요하지 않습니다. (해체 될 때 appdomain 상태를 잃어 버리는 것은 바람직하지 않습니다.) 또는 자체 프로세스를 만드는 것입니다. – ionwarp

관련 문제