在 WCF 客户端的代码中设置消息版本
Posted
技术标签:
【中文标题】在 WCF 客户端的代码中设置消息版本【英文标题】:Setting Message version in code for WCF client 【发布时间】:2011-05-09 06:00:10 【问题描述】:我想将 WSHttpBinding 的消息版本设置为 EnvelopeVersion.Soap11。我不知道该怎么做。谁能帮我。这是我的绑定代码
var binding = new WSHttpBinding()
UseDefaultWebProxy = true,
Security =
Mode = SecurityMode.Transport,
Transport =
ClientCredentialType = HttpClientCredentialType.Basic
,
,
;
编辑: 这是执行此操作的代码
TransportBindingElement transportElement = null;
transportElement = new HttpsTransportBindingElement();
((HttpsTransportBindingElement)transportElement).AuthenticationScheme = AuthenticationSchemes.Basic;
((HttpsTransportBindingElement) transportElement).KeepAliveEnabled = false;
var messegeElement = new TextMessageEncodingBindingElement
MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None),
ReaderQuotas =
MaxArrayLength = 200000,
MaxBytesPerRead = 200000,
MaxDepth = 200000,
MaxNameTableCharCount = 200000,
MaxStringContentLength = 200000
;
var binding = new CustomBinding(messegeElement, transportElement);
return binding;
【问题讨论】:
谢谢,这是我一直在寻找的答案! 【参考方案1】:为了实现这一点,您需要定义自定义绑定 - 在配置或代码中。
在配置中,你会这样做:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="Soap11">
<textMessageEncoding messageVersion="Soap11" />
<httpTransport />
</binding>
</customBinding>
</bindings>
然后,在您的服务或客户端配置中,使用如下内容:
<services>
<service name="test">
<endpoint name="TestEP"
address=""
binding="customBinding"
bindingConfiguration="Soap11"
contract="IService" />
</service>
</services>
</system.serviceModel>
【讨论】:
@amz:您应该使用此解决方案更新您的原始问题;在那里你可以正确格式化并呈现它 - 在 cmets 中,这是一件凌乱的事情......以上是关于在 WCF 客户端的代码中设置消息版本的主要内容,如果未能解决你的问题,请参考以下文章
如何在WPF应用程序中的SOAP客户端的“Set-Cookie”标头响应的新请求中设置“Cookie”标头