質問

Web Service Extensionsの経験はありますか? MSの例からWebサービス拡張を作成しようとして時間を費やしました。

VS IDE <!> quot; Project <!> gt;を介して、WSDLへの参照を追加して構築された.net 3.5 Webサービスクライアントがあります。サービス参照<!> quot;を追加します。これでWebサービスクライアントが構築され、すべて正常に動作します。

Webサービスクライアントの要求と応答の本文をインターセプトする必要があります。 Webサービス拡張機能に関する多くの参照を見つけましたが、疲れた攻撃を受けており、拡張機能を起動できません。

ここからMSの例を使用しました<!> quot; SOAP拡張機能の実装方法<!> quot; ( http://msdn.microsoft.com/en-us/library/7w06t139 .aspx )、要求/応答ストリームのロガーを構築します。

関連するMS記事<!> quot; Soap Message Modification <!> quot; ( http://msdn.microsoft.com/en- us / library / esw638yk(VS.85).aspx )は、WebクライアントのSOAP拡張機能を有効にする方法を示しています。

  

SOAP拡張機能の実装

     

クライアントアプリケーションまたはサーバーアプリケーションでSOAP拡張機能を実行するには、2つの方法があります。まず、拡張機能を実行するようにアプリケーションを構成できます。すべてのWebサービス、特にvrootですべてのWebメソッドに対して実行するようにSOAP拡張機能を構成するには、Web.configファイル内の<soapExtensionTypes> Elementセクションを編集します。次のコードは、type属性値が1行であり、拡張機能の完全修飾名に加えて、署名済みアセンブリのバージョン、カルチャ、および公開キートークンが含まれている必要があることを示しています。

     

<!> lt; configuration <!> gt;
  <!> lt; system.web <!> gt;
      <!> lt; webServices <!> gt;
        <!> lt; soapExtensionTypes <!> gt;
          <!> lt; add type = <!> quot; Contoso.MySoapExtension、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 <!> quot;   priority = <!> quot; 1 <!> quot; group = <!> quot; 0 <!> quot; / <!> gt;
          <!> lt; / soapExtensionTypes <!> gt;
      <!> lt; / webServices <!> gt;
    <!> lt; /system.web <!> gt;
  <!> lt; / configuration <!> gt;

traceextensionを独自のクラスライブラリにコンパイルし、次のようにWebサービスプロジェクトのweb.configで参照しました。

  

<!> lt; add type = <!> quot; TraceExtension、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = ef8757fac167b8d8 <!> quot; priority = <!> quot; 1 <!> quot; group = <!> quot; High <!> quot; / <!> gt;

喜びはありません。何も記録されず、ブレークポイントにヒットしません。

次に、参照されたクラスを削除し、ソースコードをWebサービスプロジェクトにドロップしました。

そのように参照を追加しようとしました(私の名前空間はServcieTest001です):

  

<!> lt; add type = <!> quot; ServiceTest001.TraceExtension <!> quot; group = <!> quot; High <!> quot; priority = <!> quot; 1 <!> quot; / <!> gt;

拡張機能<!> quot; get-raw-soap-data-from-a-web-reference-client-running-in-asp-net <!> quotを有効にするためのガイドとして、次のスレッドを使用しました; ( http:// stackoverflow .com / questions / 300674 / getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net )。

まだ喜びはありません。次に、上記のスレッドからコードをコピーしましたが、SOAPリクエストを行うときに拡張機能を起動できません。

機能するダウンロード可能なWebサービス拡張デモプロジェクトを誰かに教えてもらえるので、それを分解して不足しているものを解決できますか

役に立ちましたか?

解決

Johnは正しいです。IClientMessageInspectorを実装するカスタムクライアント動作を使用して、クライアント上のメッセージをインターセプトできます。 MSDNの How To:クライアントでメッセージを検査または変更するを参照してください。

唯一の「厄介な」ことは、メッセージ body を変更する場合、最初に元のメッセージのコピーを作成する必要があることです。 gooeyの詳細については、メッセージクラスの使用を参照してください。

他のヒント

休憩したい場合があります。

WSEを使用したくない。 WSEは廃止されました。

ASMX Webサービスを使用したくない-マイクロソフトは、それらを<!> quot; legacy <!> quot;と見なしています。技術、およびバグを修正しません。ところで、WSEはASMXに基づいているので、それは何ですか?


Windows Communication Foundationのみを使用したい場合。 MSDNのWCF Development Centerは http://msdn.microsoft.com/wcf/ にあります。

楽しんで、厄介な古代の時代遅れのものから離れてください。

うん-疲れすぎた。

私は、<!> quot; Web参照<!> quot;でWebサービス拡張が動作することを考えます。 (.net 2)、<!> quot;サービス参照<!> quotではありません; (.net 3)。

だから私は私の質問を変更することを推測します。レガシーWebサービスに接続されていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top