2

私はSOAPにはかなり慣れていないので、気楽にやってください。次のヘッダー形式を受け入れる SOAP サービスをセットアップしようとしています。

<soap:Header>
   <wsse:Security>
      <wsse:UsernameToken wsu:Id='SecurityToken-securityToken'>
         <wsse:Username>Username</wsse:Username>
         <wsse:Password>Password</wsse:Password>
         <wsu:Created>Timestamp</wsu:Created>
      </wsse:UsernameToken>
   </wsse:Security>
</soap:Header>

このサービスを組み込むアプリケーションは ASP.NET 3.5 Web アプリケーションであり、WCF を使用して SOAP エンドポイントを既にセットアップしています。WCFが機能し、正常に機能することを確認するために基本的なサービスをセットアップしました(ヘッダーは無視してください)。上記の形式は WS-Security に準拠していると聞いたので、web.config に WSHttpBinding を追加しました。

<service name="Nexternal.Service.XMLTools.VNService"
         behaviorConfiguration="VNServiceBehavior">
  <!--The first endpoint would be picked up from the confirg
  this shows how the config can be overriden with the service host-->
  <endpoint address=""
            binding="wsHttpBinding"
            contract="Nexternal.Service.XMLTools.IVNService"/>
</service>

テスト ハーネス (soapUI) をダウンロードし、上記のヘッダーを含むテスト メッセージに貼り付けたところ、400 Bad Request エラーが返されました。

...念のために言うと、IIS7 を使用して Visual Studio 2008 を実行しています。

私はサークルに入っているような気がするので、どんな助けも素晴らしいでしょう. 前もって感謝します。

4

1 に答える 1

3

理解した。MessageContracts( http://msdn.microsoft.com/en-us/library/ms730255.aspx )を使用して、WSDLで生成されたものをカスタマイズできました。これにより、ヘッダーの形式を指定できました。子ノードを含むノードごとに、そのノードを表すクラスを作成し、.NET のシリアル化ツール ( など) を使用XmlElementAttributeXmlArrayAttributeて、生成された にこれをどのように反映させるかを指定しましたWSDLDataContractも使用できますが、私の理解DataContractでは、基本的なフォーマットのみであり、フォーマット方法に実際に飛び込むことはできません。

これが同様の問題を抱えている人に役立つことを願っています。

SOAP について詳しく知っている人が欠陥を見つけたら、私に知らせてください。ご意見をお待ちしております。

于 2010-04-07T18:41:24.103 に答える