3

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 サービスにエンドポイントの動作を追加することは可能ですか?

4

1 に答える 1

2

ServiceHostエンドポイントの動作は、開く (サービスのホスティングを開始する)前にのみ追加できます。そのため、サービスをリセットする必要があります。ServiceHostIIS でホストされているサービスへのアクセスはServicHostFactory、.svc ファイルで定義する必要があるカスタムを介して行われます。したがって、一般的にServiceHostFactory、いくつかのリポジトリからビヘイビアをロードしてCreateServiceHostメソッドで使用するカスタムのようなものが必要です。動作は、アプリケーションを再起動した後にのみ適用されます。

于 2011-05-03T20:49:12.610 に答える