2012-10-15 4 views
1

다른 WCF 서비스를 호출하는 WCF 서비스를 작성해야하는 프로젝트가 있습니다. 다음과 같이 표시됩니다.WCF : 다른 WCF 서비스를 호출 할 때 오류를 처리하는 방법?

[ServiceContract] 
public interface IAsurService 
{ 
    [OperationContract(ReplyAction = AsurService.ReplyAction_GetCatalogList)] 
    Message GetCatalogList(); 

public Message GetCatalogList() 
{ 
    // The external client service 
    GetNsiClient client = new GetNsiClient(); 

    authContext auth = new authContext 
    { 
     company = "asur_nsi", 
     password = "lapshovva", 
     user = "dogm_LapshovVA" 
    }; 

    catalogs catalogs = client.getCatalogList(auth); 

이 경우 오류를 처리하려면 어떻게해야합니까? 다음과 같은 표준 오류 계약 방식을 사용할 수 있습니까?

[DataContract] 
public class AsurDataFaultException 
{ 
    private string reason; 

    [DataMember] 
    public string Reason 
    { 
     get { return reason; } 
     set { reason = value; } 
    } 
} 

public Message GetCatalogList() 
{ 
    // The external client service 
    GetNsiClient client = new GetNsiClient(); 

    authContext auth = new authContext 
    { 
     company = "asur_nsi", 
     password = "lapshovva", 
     user = "dogm_LapshovVA" 
    }; 

    catalogs catalogs = null; 
    try 
    { 
     catalogs = client.getCatalogList(auth); 
    } 
    catch (Exception exception) 
    { 
     AsurDataFaultException fault = new AsurDataFaultException(); 
     fault.Reason = "The error: " + exception.Message.ToString(); 
     throw new FaultException<AsurDataFaultException>(fault); 
    } 

또는 다른 것이 있습니까?

미리 감사드립니다.

고란

답변

0

원격 WCF 서비스의 실패 코드의 실패 후, 분명히이 같은 내부 세부 원격 WCF 서비스의 또는 예외를 노출하지 않아야 결함하지만 결함 을 던져해야 발생하는 경우 그래서 :

catch (Exception exception) 
{ 
    // Indicate all that you may expose -- that the data is unavailable. 
    DataUnavailableFault fault = new DataUnavailableFault(); 
    throw new FaultException<DataUnavailableFault>(fault); 
} 

당신은 물론 또한 재시도 메커니즘을 사용할 수 있지만 분명 당신이와 끝까지하는 원격 서비스에 장애가있는 경우, 당신은 적절한 오류를 던져 발신자에 그를 표시해야합니다.

관련 문제