ASP.NET의 SOAP 예외에서 내부 예외를 어떻게 추출합니까?
-
09-06-2019 - |
문제
다음과 같은 간단한 웹 서비스 작업이 있습니다. 라코 디스
그리고 웹 서비스를 사용하고 작업을 호출하는 클라이언트 애플리케이션이 있습니다.분명히 예외가 발생합니다 :-) 라코 디스
내 캐치 블록에서 내가하고 싶은 것은 실제 예외의 메시지를 추출하여 내 코드에서 사용하는 것입니다.잡힌 예외는 SoapException
입니다. 괜찮지 만 Message
속성은 다음과 같습니다 ...
라코 디스
... 그리고 InnerException
는 null
입니다.
제가하고 싶은 것은 Message
(제 샘플의 InnerException
텍스트)의 HelloWorldException
속성을 추출하는 것입니다. 누구든지 도움을 줄 수 있습니까?피할 수 있다면 Message
의 SoapException
속성을 파싱하지 마십시오.
해결책
안타깝게도 이것이 가능하지 않다고 생각합니다.
웹 서비스 코드에서 발생하는 예외는 Soap Fault로 인코딩 된 다음 문자열로 다시 클라이언트 코드에 전달됩니다.
SoapException 메시지에 표시되는 것은 단순히 Soap 오류의 텍스트로, 예외로 다시 변환되지 않고 텍스트로 저장됩니다.
오류 상태에서 유용한 정보를 반환하려면 웹 서비스에서 사용자 정보가 포함 된 "오류"속성을 가질 수있는 사용자 지정 클래스를 반환하는 것이 좋습니다. 라코 디스
다른 팁
가능 있다 !
서비스 운영 예 : 라코 디스
서비스를 사용하는 클라이언트 : 라코 디스
한 가지만-web.config (서비스 프로젝트)에서 customErrors mode= 'RemoteOnly'또는 'On'을 설정해야합니다.
customErrors 발견에 대한 크레딧- http://forums.asp.net/t/236665.aspx / 1
조금 전에 비슷한 것을 만났고 블로그했습니다 .정확히 적용 가능한지 확실하지 않지만 그럴 수도 있습니다.MessageFault 개체를 통과해야한다는 사실을 알게되면 코드는 간단합니다.필자의 경우 세부 정보에 SOAP 서비스를 다시 쿼리하는 데 사용할 수있는 GUID가 포함되어 있다는 것을 알고있었습니다.코드는 다음과 같습니다. 라코 디스