1

Java初期化サーブレットに相当する.netはありますか?

私たちがそれにいる間、フィルターに相当しますか?

そして最後に、上記のもの(フィルター)が存在する場合、これらはWCFサービスへの要求が行われる前/後に実行できますか?

4

2 に答える 2

1

HttpApplication.Application_OnStartええと、私はJavaフレームワークを知りませんが、その音から、初期化のためにGlobal.asaxイベントを探しているかもしれません。

そしてフィルター?試してみてくださいIHttpModule

于 2010-11-09T16:53:37.013 に答える
1

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のカスタム動作を理解する方法の完全なウォークスルーを確認できます。

于 2010-11-10T13:03:09.577 に答える