본문 바로가기
데스크탑/.NET

웹서비스 SOAPFault 에서 Faultstring 에 디버깅 정보 없애기

by 브래드.권 2013. 4. 30.

 

 

 

Version 1.0

문서 이력

2013-04-05 최초 작성 Ver 1.0

 

 

 

웹서비스 개발 중에 <soap:Fault> 발생 시 faultstring 에 디버깅 정보가 포함되어 나타나는 경우 이 디버깅 정보가 나타나지 않게 하는 방법입니다.

 

일단, 디버깅 정보가 포함된 faultstring 을 가진 응답 SOAP 메시지입니다.

 

 

<soap:Body>

      <soap:Fault>

         <faultcode>soap:Server</faultcode>

         <faultstring>System.Web.Services.Protocols.SoapException: 서버에서 요청을 처리할 수 없습니다. ---> System.Exception: ORA-01008: 일부 변수가 바인드되지 않았습니다.

   위치: NineBear.Dac.gettInfo(String pInput) 파일 C:\Users\Administrator\Documents\Visual Studio 2008\Projects\test\NineBear.Dac\Dac.cs: 183

   위치: NineBear.Biz.getInfo(String pInput) 파일 C:\Users\Administrator\Documents\Visual Studio 2008\Projects\test\NineBear.Biz\Biz.cs: 104

   위치: WebService.test_Retrieve(String pInput) 파일 c:\Users\Administrator\Documents\Visual Studio 2008\Projects\test\NineBear.Web\App_Code\WebService.cs: 86

   --- 내부 예외 스택 추적의 끝 ---</faultstring>

         <detail/>

      </soap:Fault>

   </soap:Body>

 

 

프로젝트의 web.config 파일을 보면 아래와 같은 부분이 있습니다.

 

 

<!--  사용자 지정 오류 메시지

          사용자 지정 오류 메시지를 사용하려면 customErrors mode="On" 또는 "RemoteOnly"로 설정하고 사용하지 않으려면 "Off"로 설정합니다.

          처리할 각 오류에 <error> 태그를 추가하십시오.

 

          "On" 항상 사용자에게 친숙한 메시지가 표시됩니다.

          "Off" 항상 자세한 ASP.NET 오류 정보가 표시됩니다.

          "RemoteOnly" 로컬 웹 서버에서 액세스하지 않는 사용자에게만 사용자에게 친숙한

           메시지가 표시됩니다. 이 설정은 원격 클라이언트에서 응용 프로그램의 자세한 정보가

           표시되지 않도록 보안을 강화할 때 사용하면 좋습니다.

    -->

    <customErrors mode="RemoteOnly" />

 

 

일반 웹 페이지와 동일하게 웹서비스에서도 오류 발생 시 디버깅 정보를 보여줄 지 안 보여줄지를 customErrors 로 설정할 수 있습니다.

 

Mode 값에 대한 설명을 읽어보면 현재 RemoteOnly 로 되어 있고 로컬이므로 디버깅 정보가 보였던 것이죠. 값을 On 으로 바꾸면 로컬에서도 디버깅 정보가 나타나지 않습니다.

 

 

<soap:Body>

      <soap:Fault>

         <faultcode>soap:Server</faultcode>

         <faultstring>서버에서 요청을 처리할 수 없습니다. ---> ORA-01008: 일부 변수가 바인드되지 않았습니다.</faultstring>

         <detail/>

      </soap:Fault>

   </soap:Body>