2012-01-17 4 views
0

私はASP.Net MVC 2アプリケーションにWCFを使用します。 サービスに障害が発生した場合は、サーバーとクライアントの両方を再起動する必要があります。 チャンネルにエラーが発生しました。エラーです。WCFフォールトはサーバーとクライアントの両方を再起動するように強制します。

どうしてですか?なぜこのエラーが発生し、時間がかかるという事実のために、再起動の習慣を避けるために私に何を勧めていますか?

edit1: ブロックを使用してサービスをホストします。 すぐに問題を再現するためのサンプルコードを少しのプログラムで提供します。

編集2: 私は自己を使用するには、WCFサービスライブラリ

[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); 
} 

を主催し、クライアントに、私はこのサービスにサービス参照を追加しました。

すべてのタイプの例外を処理し、それをクライアントにフォルトを使用してスローする必要がありますか?

+1

詳細を入力する必要があります。何が起こっているのですか?サーバとクライアントの両方でどのようなエラー処理をしていますか? FaultExceptionsを使用していますか? – diggingforfire

+0

ええ、私は処理の障害例外を使用します –

答えて

2

ServiceHostをusingブロックでラップしないでください。

詳細はこちらを参照してください:あなたの発信者に障害を送信に関して http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/

UPDATE

:はい、一般的にあなたが呼び出し元にSOAP障害などのサービス上の例外を返す必要があります話します。これがSOAP障害のために設計されたものです。

ただし、呼び出し元に返すすべての障害の障害契約を定義する必要があります。

ガイドラインとして、発信者が扱うことができる障害を(リトライまたは他のアクションのいずれかによって)有意義に送信し、回復する必要があります。

発信者のチャネルが中断したサービスに障害がある場合、明示的に障害を送信する必要はないため、WCFがこれを行います。

+0

しかし、これは私の質問にはまだ答えません –

+0

私の答えに更新を参照してください –

関連する問題