문제

다음과 같은 간단한 웹 서비스 작업이 있습니다. 라코 디스

그리고 웹 서비스를 사용하고 작업을 호출하는 클라이언트 애플리케이션이 있습니다.분명히 예외가 발생합니다 :-) 라코 디스

내 캐치 블록에서 내가하고 싶은 것은 실제 예외의 메시지를 추출하여 내 코드에서 사용하는 것입니다.잡힌 예외는 SoapException입니다. 괜찮지 만 Message 속성은 다음과 같습니다 ... 라코 디스

... 그리고 InnerExceptionnull입니다.

제가하고 싶은 것은 Message (제 샘플의 InnerException 텍스트)의 HelloWorldException 속성을 추출하는 것입니다. 누구든지 도움을 줄 수 있습니까?피할 수 있다면 MessageSoapException 속성을 파싱하지 마십시오.

도움이 되었습니까?

해결책

안타깝게도 이것이 가능하지 않다고 생각합니다.

웹 서비스 코드에서 발생하는 예외는 Soap Fault로 인코딩 된 다음 문자열로 다시 클라이언트 코드에 전달됩니다.

SoapException 메시지에 표시되는 것은 단순히 Soap 오류의 텍스트로, 예외로 다시 변환되지 않고 텍스트로 저장됩니다.

오류 상태에서 유용한 정보를 반환하려면 웹 서비스에서 사용자 정보가 포함 된 "오류"속성을 가질 수있는 사용자 지정 클래스를 반환하는 것이 좋습니다. 라코 디스

다른 팁

가능 있다 !

서비스 운영 예 : 라코 디스

서비스를 사용하는 클라이언트 : 라코 디스

한 가지만-web.config (서비스 프로젝트)에서 customErrors mode= 'RemoteOnly'또는 'On'을 설정해야합니다.

customErrors 발견에 대한 크레딧- http://forums.asp.net/t/236665.aspx / 1

조금 전에 비슷한 것을 만났고 블로그했습니다 .정확히 적용 가능한지 확실하지 않지만 그럴 수도 있습니다.MessageFault 개체를 통과해야한다는 사실을 알게되면 코드는 간단합니다.필자의 경우 세부 정보에 SOAP 서비스를 다시 쿼리하는 데 사용할 수있는 GUID가 포함되어 있다는 것을 알고있었습니다.코드는 다음과 같습니다. 라코 디스

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