gpt4 book ai didi

c# - WCF 是否支持 WS-Security with SOAP 1.1?

转载 作者:太空狗 更新时间:2023-10-29 17:35:18 24 4
gpt4 key购买 nike

我需要调用一些需要 WS-Security 的第三 Web 服务。我使用以下配置创建了一个 WCF 端点:

<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="TestBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="TestBehavior">
<callbackDebug includeExceptionDetailInFaults="true" />
<clientCredentials>
<clientCertificate findValue="Acme" storeLocation="CurrentUser" storeName="My" x509FindType="FindBySubjectName" />
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="https://acme.com/webservices" binding="wsHttpBinding" bindingConfiguration="TestBinding" behaviorConfiguration="TestBehavior" contract="AcmeContract" name="AcmeEndpoint"></endpoint>
</client>
</system.serviceModel>

问题是第 3 方服务器抛出以下异常:

Received protocol '_http://schemas.xmlsoap.org/wsdl/soap12/', required protocol '_http://schemas.xmlsoap.org/wsdl/soap/'.

我知道使用 wsHttpBinding 会导致 WCF 发送 SOAP 1.2 请求,而使用 basicHttpBinding 会导致 SOAP 1.1 请求。由于需要 WS-Security 部分,据我所知,我必须使用 wsHttpBinding。我的问题是如何强制执行 SOAP 1.1 请求?我有哪些选择?

最佳答案

为了使用 WS-Addressing ( wsHttpBinding ),但使用 SOAP 1.1(默认为 SOAP 1.2),您需要定义自定义 WCF 绑定(bind)(例如在配置中)并使用它:

<bindings>
<customBinding>
<binding name="WsHttpSoap11" >
<textMessageEncoding messageVersion="Soap11WSAddressing10" />
<httpTransport/>
</binding>
</customBinding>
</bindings>

然后在您的端点定义中,使用:

<endpoint name="WsSoap11"
address="....."
binding="customBinding"
bindingConfiguration="wsHttpSoap11"
contract="....." />

当然,您可以使用其他属性扩展上面定义的自定义绑定(bind),例如<reliableMessaging>或其他人。

有关 WCF 绑定(bind)以及如何在配置中“组合”您自己的自定义绑定(bind)的更多非常详细、非常有用的信息,请阅读这篇优秀的 MSDN 文章 Service Station: WCF Bindings In Depth作者:Aaron Skonnard。

关于c# - WCF 是否支持 WS-Security with SOAP 1.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com