WCFでカスタムSOAPヘッダーを追加しようとしましたが、クライアントの要求にステータスに関する詳細情報を提供しようとしています。WCFでビヘイビア拡張機能を実装しようとしています
これを行うためにビヘイビア拡張を実装する方法の例をいくつか参照しました。 https://blogs.msdn.microsoft.com/mohamedg/2012/10/21/adding-custom-soap-headers-in-wcf/ https://ovaismehboob.wordpress.com/2011/06/23/inspecting-messages-in-wcf/ https://blogs.msdn.microsoft.com/carlosfigueira/2011/06/28/wcf-extensibility-behavior-configuration-extensions/
それはセットアップが非常に困難なようではありません。私はVisual Studio 2012でデバッグしています。私が見ている動作は、BehaviorExtensionElement.BehaviorTypeメソッドがデバッグ中にヒットしていることです。しかし、EndPointBehaviorメソッドはヒットしていません。 web.configを複数回チェックして、値が適切に設定されていることを確認しました。 BehaviorTypeメソッドがヒットしているので、web.configの設定は良いはずです。なぜこれがうまくいかないのかについて多くの記事やスレッドを読んだが、何も進んでいない。
Visual Studioでサービスをデバッグするのに関連するものがないことを確認するために、これをデバッグする方法を正確に含めることにしました。ソリューションエクスプローラで.svcファイルを強調表示し、Visual Studio Webサービステストインターフェイスを起動するデバッガを起動します。インターフェイスが起動している間、BehaviorTypeメソッドがヒットします。私は約4回F5を押すと、インターフェイスが完全にレンダリングされます。私は私のサービス方法の一つをダブルクリックし、必要なパラメータを入力して提出します。私がこの仕組みを理解したことは、カスタムエンドポイントビヘイビアークラスのBeforeSendReplyメソッドをヒットする必要があることです。私はクラス内のすべてのメソッド、たとえ実装されていないメソッドでもブレークポイントを持っています。
また、CreateBehaviorメソッドがヒットしないことを言及したいと思います。
私は何か提案をいただきありがとうございます。
おかげで、 トム
サービスレベルの動作を実装しようと決めました。これは期待どおりに動作します。しかし、私は、エンドポイントレベルの動作を実装することが最善であると考えました。私はエンドポイントがしない間にサービスの振る舞いがなぜ機能するのか分からない。 –