2012-10-26 3 views
4

내 웹 응용 프로그램에서 단방향 비동기 WCF 서비스가 있습니다. 이 서비스에서는 global.asax Application_Error에서와 마찬가지로 모든 예외를 catch하고 싶습니다. 나는이 이벤트를 처리하기 위해 시도했다 : 현재 스레드에서 모든 예외 잡기

AppDomain.CurrentDomain.UnhandledException += (s,e) => { //some logic }; 
AppDomain.CurrentDomain.FirstChanceException += (s,e) => { //some logic }; 

도 시도 :

//this one is for Win Forms Application 
Application.ThreadException += (s,e) => { //some logic }; 

//this one is for Web Application 
HttpContext.Current.ApplicationInstance.Error += (s,e) => { //some logic }; 

는하지만이 핸들러의 아무도 도달하지 않습니다.

다른 아이디어는 무엇입니까?

+1

스레드 자체의 코드를 게시해야합니다. 그렇지 않으면 가이드 할 수있는 정보가 충분하지 않습니다. –

+0

@jgauffin : 조언 해 주셔서 감사합니다. – Gev

답변

2

이러한 코드 줄을 웹 페이지에 넣으면 길을 잃을 것입니다. 왜? 웹 페이지의 수명이 제한되어 있기 때문입니다. 이벤트 처리를 유지하려면 전역 asax 파일에 넣어야합니다.

+1

웹 페이지가 아니며 ASAX 파일이 없습니다. –

+0

@HenkHolterman : ASP.NET의 WCF에 대해 Global.asax가 정상적으로 작동합니다. – jgauffin

+0

@ SlimH2S 질문을 읽었습니까? – Gev

2

WCF를 사용하면 IErrorHandler를 구현하는 개체를 Dispatcher의 오류 처리기에 삽입 할 수 있습니다.

MSDN page에는 샘플 코드가 있습니다.

+0

Dispatcher가이 오류를 처리 할 수 ​​있어야합니까? 서비스는 편도입니다. – Gev

+0

http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S1 – Gev

+0

OneWay가 무엇인지 알고 있으며 '정상적인'오류 차단이 작동하지 않는 이유를 알지 못합니다. –