Java初期化サーブレットに相当する.netはありますか?
私たちがそれにいる間、フィルターに相当しますか?
そして最後に、上記のもの(フィルター)が存在する場合、これらはWCFサービスへの要求が行われる前/後に実行できますか?
Java初期化サーブレットに相当する.netはありますか?
私たちがそれにいる間、フィルターに相当しますか?
そして最後に、上記のもの(フィルター)が存在する場合、これらはWCFサービスへの要求が行われる前/後に実行できますか?
HttpApplication.Application_OnStart
ええと、私はJavaフレームワークを知りませんが、その音から、初期化のためにGlobal.asaxイベントを探しているかもしれません。
そしてフィルター?試してみてくださいIHttpModule
。
HttpApplicationのOnStartイベントを使用して、サービスの開始時にインターセプトすることも、IHttpModuleを使用してリクエストをインターセプトすることもできますが、WCFでこれらのインターセプトを実行する正しい方法ではありません。
推奨事項が機能する唯一の理由は、IISでホストされており、IIS固有のフックを使用しているためです。ただし、WCFサービスはどこでもホストできるため、サービスをサービスプロセスに移動したり、バインディングを変更したりする場合があります(たとえば、httpの代わりにnet-tcpを使用する場合は、どのようにしますか? IHttpModule実装を介して入ってくるコンテンツを読みますか?できませんでした)これにより、これらのフックが壊れます。
とはいえ、理想的には、ServiceHostインスタンスを作成する前に、あらゆる種類の初期化を実行します。ただし、IISのWCFでServiceHostインスタンスにアクセスできないため、カスタムServiceHostFactoryを実装し、そのファクトリをsvcファイルで指定する必要があります(IISまたはWASでのカスタムServiceHostの使用というタイトルのセクションを参照)。 このアプローチを取ると、ポータブルになります。
通話の傍受については、クライアント側とサービス側で行うことができます。クライアント側ではIClientMessageInspectorを実装し、サーバー側ではIDispatchMessageInspectorが必要です(後者が必要だと思います)。
このインスペクターをサービス側に「注入」するには、エンドポイント動作(サービスの特定のエンドポイント、IEndpointBehaviorの実装に適用される)またはサービス動作(サービス上のすべてのエンドポイントに適用される)を使用する必要があります。サービス、IServiceBehaviorインターフェースの実装を介して)。
これらの実装を通じて、ServiceEndpoint(エンドポイントの動作の場合)またはServiceDescriptionクラスを調べて、インスペクターの実装、またはWCFで使用可能な他のフックのいずれかを適用します。
PaoloPialorsiの「WritingWCFMessageInspector」を読んで、これをすべてまとめてWCFのカスタム動作を理解する方法の完全なウォークスルーを確認できます。