IIS でホストされている WCF サービスがあり、それにエンドポイントの動作を追加する必要があります。web.configに追加することはできません。(プラグイン アーキテクチャをサポートする必要があり、プラグイン作成者は私の web.config にアクセスできません。) これをサービスの静的コンストラクターに入れてみました。
var endpointDispatcher = OperationContext.Current.EndpointDispatcher;
SilverlightFaultMessageInspector inspector = new SilverlightFaultMessageInspector();
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector);
しかし、「ServiceHost を開いた後はこの値を変更できません」という例外がスローされます。インスペクタ オブジェクトを追加する前に host.Close() を呼び出すと、同じ例外がスローされます。
私もこれを試しました:
var host = OperationContext.Current.Host;
host.Description.Endpoints[0].Behaviors.Add(new SilverlightFaultBehavior());
しかし、効果がないようです。エンドポイントの動作が呼び出されることはありません。
では、IIS がホストする WCF サービスにエンドポイントの動作を追加することは可能ですか?