【问题标题】:Header Setup in SOAP with ASP.NET 3.5 WCF带有 ASP.NET 3.5 WCF 的 SOAP 中的标头设置
【发布时间】:2010-04-05 18:33:39
【问题描述】:

我对 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。

我觉得我在兜圈子,所以任何帮助都会很棒。提前致谢。

【问题讨论】:

    标签: asp.net wcf soap ws-security soapui


    【解决方案1】:

    想通了。我能够使用MessageContracts (http://msdn.microsoft.com/en-us/library/ms730255.aspx) 自定义在WSDL 中生成的内容。这允许我指定标题的格式。对于包含子节点的每个节点,我创建了一个类来表示该节点并使用 .NET 的序列化工具(例如XmlElementAttributeXmlArrayAttribute 等)来指定如何在生成的WSDL 中反映这一点。 DataContract 也可以使用,但据我了解,DataContract 仅用于基本格式,不允许您真正深入了解其格式。

    希望这对遇到类似问题的人有所帮助。

    如果任何对 SOAP 有更多了解的人发现了缺陷,请告诉我。非常感谢您的输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多