2012-01-17 1 views
0

ASP.Net MVC 2 응용 프로그램에 WCF를 사용합니다. 그리고 서비스에 오류가 발생하면 서버와 클라이언트를 다시 시작해야합니다. 채널에 오류가 발생했습니다. 오류입니다.WCF 오류로 인해 서버와 클라이언트가 다시 시작됩니다.

왜 그런 일이 발생합니까? 이 오류가 발생하는 이유는 무엇이며 시간이 많이 걸리는 사실 때문에 재시작 습관을 피하기 위해 무엇을 권하고 있습니까?

edit1 : 블록을 사용하여 서비스를 사용합니다. 곧 샘플 코드를 제공하여 문제를 재현 해 보겠습니다.

편집 2 : 나는

[ServiceContract] 
public interface IAuctionService 
{ 
    [OperationContract] 
    [FaultContract(typeof(DatabaseFault))] 
    void SaveCategory(CategoryDTO category); 

    [OperationContract] 
    [FaultContract(typeof(DatabaseFault))] 
    List<CategoryDTO> ListCategories(); 

    [OperationContract] 
    [FaultContract(typeof(DatabaseFault))] 
    CategoryDTO GetCategoryById(long id); 
} 

그리고 클라이언트에 나는이 서비스에 서비스 참조를 추가 한 WCF 서비스 라이브러리

를 개최 자체를 사용합니다.

모든 유형의 예외를 처리하고 클라이언트에 결함을 사용해야합니까?

+1

자세한 내용을 입력해야합니다. 정확히 무슨 일이 일어나고있는거야? 서버와 클라이언트 모두에서 어떤 종류의 오류 처리가 있습니까? FaultExceptions를 사용합니까? 등 – diggingforfire

+0

그래, 내가 처리 오류 오류를 사용 –

답변

2

사용중인 블록에 ServiceHost를 래핑하지 마십시오!

은 자세한 내용은 여기를 참조하십시오 : 예 일반적으로 당신이 호출자에게 SOAP 오류로 서비스에 예외를 반환해야합니다 말하기 : 발신자에 오류를 전송에 관한 http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/

UPDATE

. 이것은 SOAP 오류가 설계된 것입니다.

그러나 발신자에게 돌려 줄 모든 오류 유형에 대해 오류 계약을 정의해야합니다.

지침에 따르면 사용자가 유의미하게 처리하고 복구 할 수있는 결함 만 보내야합니다 (재시도 또는 다른 조치로).

발신자와의 채널이 중단 된 서비스에 결함이있는 경우 명시 적으로 오류를 보낼 필요가없는 경우 WCF가이를 처리합니다.

+0

하지만 여전히 내 질문에 대답하지 않습니다 –

+0

내 대답 업데이트보기 –