2014-11-25 2 views
0

저는 WCF를 처음 사용하고 WebHttpBinding 바인딩을 사용하여 데모 WCF 프로젝트를 작성하려고합니다.클라이언트 측에서 오류 예외를 얻으려면

프로젝트는 정상적으로 작동하지만 장애 예외 개념에 집착하고 있습니다. 다음은 오류 예외를 생성하는 데 사용하는 코드입니다.하지만 클라이언트 측에서는 (400) 잘못된 요청 오류가 발생하고 InnerException은 null입니다. 나는 어디에서 잘못되고 있는가?

public DataTable GetCreativesData(string id,string type) 
    { 
     try { 
     DataAccess da = new DataAccess(); 
     string qryStr = @"select * from dbo.tbMyTable"; 
     if (type != null && type != "") 
      qryStr += " WHERE1 type='"+type+"'"; 
     DataTable dt = da.GetDataTable(qryStr); 
     return dt; 
     } 

     catch (FaultException ex) { 
      throw new FaultException("Improper Query"); 
     } 
    } 
+0

WCF 서비스에서'FaultException'을 던지고 있습니까? –

+0

yes..i WCF 서비스에서 제기하는 경우 – Tweety01

답변

0

장애 예외에 대해 400 오류가 발생했습니다. 사용자에게 제공 한 내용이 잘못되었을 가능성이 있음을 사용자에게 알리기 때문입니다. 의 개념은 & 기술 전반에 걸쳐 적용된다는 점에서 핵심 개념 인 FaultException은 내부 예외의 개념이 .NET에만 한정되어 있기 때문에 내부 예외는 없습니다.

실제로 Exception을 전달하려면 FaultException을 사용하면 일반 매개 변수를 지정한 다음이를 Exception으로 설정할 수 있습니다. 그런 다음 그것을 생성하고 키울 것입니다.

기억해야 할 또 다른 측면은 오류를 처리하는 방법이며 코드에서 새로운 예외를 던지고있는 것입니다. 이것은 변수 ex에있는 모든 정보가 손실되었음을 의미합니다. 당신이 뭔가를 숨길 의도하지 않는 한, 당신은 따라서 모든 정보를 보존,이

catch (FaultException ex) 
{ 
    throw; 
} 

이 옵션은 원래 FaultException를 받아 다시 상승 시도 할 수 있습니다.

마지막으로 궁금한 점이 있으면 SQL은 나를 겁나게합니다. SQL injection attack에 취약 할 수있는 것처럼 보입니다. 확인하고 싶은 항목 일뿐입니다.

+0

Robert에 대한 설명에 감사드립니다.하지만 사용자에게 실제 오류를 표시해야하는 경우 .... 서비스 작업을 나누고 사용자가 0을 전달한다고 가정 해 보겠습니다. .. 그러면 사용자에게 맞춤 메시지를 보여주고 싶습니다 ... 그리고 그 SQL은 단지 로컬 테스트 용입니다 .. – Tweety01

+0

FaultException에 대한 정보를 추가했습니다 어쩌면 원하는 것일 수도 있습니다 –