2009-07-21 16 views
0

WCFパイプライン用のカスタムMessageEncoderを作成しました。このカスタムMessageEncoderは、app.config内のBindingElementExtensionElementを使用して適用されます。WCFカスタムMessageEncoderはカスタム動作が必要です

メッセージが到着したとき、メッセージエンコーダはストリームからいくつかの情報を取得し、応答のヘッダーとして返されるように操作コンテキストの期間保持しなければなりません。ヘッダー操作はBehaviorの機能を叫びます。 カスタムエンコーダーをパイプラインに適用するにはどうすればよいですか(この特別な '情報'エンコーダーは本質的に無駄な動作であるため、エンコーダーの設定を追加するときに動作設定を追加することを覚えているユーザーに頼りたくはありません。

また、これらのパイプライン要素のライフサイクルについての情報は、どこにありますか?

おかげ

答えて

0

あなたが持っています基本的に2つのオプションがあります:

1)あなたの行動を属性で公開するか、サーバーの設定ファイルに追加 - このような何か:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Default"> 
      <YourCustomMessageEncoderBehavior /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

2)、またはあなたはそれがすでに存在しない場合は、ディスパッチ行動のリストにこの動作を追加してくださいになり、独自のカスタムServiceHostを作成することができます。

class YourCustomServiceHost : ServiceHost 
{ 
    public YourCustomServiceHost(Type serviceType, params Uri[] baseAddresses) 
      : base(serviceType, baseAddresses) { } 

    protected override void ApplyConfiguration() 
    { 
     base.ApplyConfiguration();  

     YourCustomMessageEncodingBehavior behavior = 
      this.Description.Behaviors.Find<YourCustomMessageEncodingBehavior>(); 

     if (behavior == null) 
     { 
      behavior = new YourCustomMessageEncodingBehavior(); 
      this.Description.Behaviors.Add(behavior); 
     } 
     else 
     { 
      return; 
     } 
    } 
} 

マルク・

関連する問題