WCF 正在使用 SOAP 1.2,即使 MessageVersion 是 Soap11WSAddressing10



我的问题如下。我收到了一个 WSDL 要在我的 .NET 4.7.1 ASP.NET 应用程序中实现,因此另一家公司可以从我们实现的 WSDL 调用操作。它们需要 WCF 服务的一些特定设置。

  • 肥皂 1.1
  • WS-Security 1.0
  • WS-寻址 1.0 (2005-08(
  • HTTPS(使用 x509 证书(
  • 他们要求我们安装特定的证书,并且我们可以用我们的证书验证他们的证书,反过来他们也会验证我们的证书,因为他们有我们的公钥。我相信我应该为此使用Custom Binding -> Security -> MutualCertificate。我已经指定了应该使用的服务和客户端证书。

(请注意,WSDL 实现不需要 WCF,他们说消费者可以用任何语言自由实现它。我选择使用 WCF,他们有一些关于它的文档,所以我认为应该支持它。

当我直接在 SOAP UI 中导入他们的 WSDL 时,它说它使用 SOAP 1.1。SOAP 1.1 命名空间在 WSDL 中可见。

当我导入服务的 WSDL(它反过来实现由他们的 WSDL 生成的接口(时,它使用 SOAP 1.2。这是不匹配的,非常烦人。

我找到了这篇文章:https://stackoverflow.com/a/22255554/3013479,我试图删除HttpSoap12并添加HttpSoap。我已将MessageVersion设置为Soap11WSAddressing10,因此它应该使用 SOAP1.1。但它不起作用。

当我使用BasicHTTPBinding而不对该绑定进行任何配置时,它确实使用 SOAP 1.1

这是我的绑定:

<customBinding>
<binding>
<textMessageEncoding writeEncoding="utf-8" messageVersion="Soap11WSAddressing10" />
<security
authenticationMode="MutualCertificate"
enableUnsecuredResponse="false"
messageProtectionOrder="EncryptBeforeSign"
includeTimestamp="true"
defaultAlgorithmSuite="TripleDesRsa15"
allowSerializedSigningTokenOnReply="false"
messageSecurityVersion="WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10"/>
<httpsTransport requireClientCertificate="true"/>
</binding>
</customBinding>

我相信我需要一个自定义绑定,因为在他们的一个文档中,他们提到了自定义绑定中的一些属性。不过我不确定!此外,此绑定会生成一个AssymetricBinding,我相信没有其他默认绑定会执行此操作。

有人有什么提示吗?你们需要WSDL的知识吗?从理论上讲,我不能/被允许调整 WSDL,因为那样服务可能无法再连接到我们了。如果我确实需要调整WSDL,请告诉我原因,以便我与公司沟通。

我已经解决了这个问题,问题是我从问题中删除的自定义编码器,因为我认为这不是导致此问题的项目。即使自定义编码器指定 Soap11WSAddressing10,它仍使用 1.2。如果我使用普通的TextMessageEncoder,它可以工作(但那个不适合我的需求(。IWsdlExporter应该用来反映在生成 WSDL 时应该使用 SOAP 1.1

相关内容

  • 没有找到相关文章

最新更新