문제

C# 양식 기반 앱에서 웹 서비스를 호출하고 있습니다.

ServReturnType obj = ServProxyClass(int i, int k);

예외를 되 찾을 가능성이 있습니다. 예외는 서비스가 전혀 연결되지 않았으며 수신에 실패가 있었지만 원래 메시지 또는 그 사이에 어떤 것도 진행되었다는 것입니다. 그런 다음 다음에 두 가지 조치 중 하나를 수행하기 위해 유형 또는 메시지 또는 둘 다에 대한 예외에 따라 결정을 내려야합니다.

try
{    
     ServReturnType obj = ServProxyClass(int i, int k);
}
catch (WebException ex)
{
     DoAction1();
}
catch(SocketException ex)
{
     DoAction2();
}
catch(SoapException ex)
{
     DoAction1()
}

문제는 후속 조치 중에서 선택한 것이 첫 번째 호출이 실패하기 전에 서버에이를 만들었는지 여부에 달려 있다는 것입니다. 가능한 모든 예외의 목록을 찾을 수있는 방법과 이것이 프레임 워크의 모든 코드이므로 의미하는 바를 찾을 수 있습니까? 나는 MSDN 문서를 보았고 SOAPHTTPCLIENTPROTOCOL.INVOKE가 SOAPEXCeption을 던질 수있는 것을 보았지만,이 방법에 따라 System.net.webexceptions를 기포하는 방법이 있습니다. 따라서 전체 콜 스택 목록과 그 던질 수있는 것과 그 의미가 필요합니다.

어떤 아이디어?

업데이트 1

DARIN, 당신의 대답은 내가 원하는 것이 실제로 의미가 없다는 의심을 확인합니다. 나는 먼저 더 많은 탐정 작업을 선택한 다음 다음에 무엇을 해야할지 결정하는 데 사용했습니다. 불행히도이 경우 신용 카드를 처리하고 있기 때문에 정확히 무슨 일이 있었는지, 그리고 데이터를 보냈는지 여부는 중요합니다.

도움이 되었습니까?

해결책

웹 서비스 호출에서 던질 수있는 예외의 전체 목록은 너무 광범위하여 가능한 모든 유형의 예외를 테스트하는 것이 좋은 생각이라고 생각하지 않습니다. 많은 경우에 비누 결함 요소 다른 모든 예외는 처리되지 않은 오류로 간주 될 수 있습니다.

try
{    
    ServReturnType obj = ServProxyClass(int i, int k);
}
catch(SoapException ex)
{
    //Serialize and analyze the fault message from the exception to obtain more info.
    DoSomethingWithTheInfo();
}
catch(Exception ex)
{
    LogTheExceptionSoThatLaterYouKnowWhatHappened(ex);
    SayToTheUserThatSomethingTerriblyWrongHappened();
}

여기 좋은 일이 있습니다 기사 SoApexections를 높이고 처리하는 방법을 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top