Wcf 如何使用ClearUserNameBinding更改默认消息大小?
我们在WCF服务中使用了ClearUserNameBindig 当我们试图返回一条记录超过3k的消息时,我们收到了以下错误: 已超过传入邮件的最大邮件大小配额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性 我们尝试这样修改web.config:Wcf 如何使用ClearUserNameBinding更改默认消息大小?,wcf,wcf-binding,Wcf,Wcf Binding,我们在WCF服务中使用了ClearUserNameBindig 当我们试图返回一条记录超过3k的消息时,我们收到了以下错误: 已超过传入邮件的最大邮件大小配额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性 我们尝试这样修改web.config: <bindings> <clearUsernameBinding> <binding name="myClearUsernameBinding"
<bindings>
<clearUsernameBinding>
<binding name="myClearUsernameBinding"
maxReceivedMessageSize="20000000"
maxBufferSize="20000000"
maxBufferPoolSize="20000000" />
<readerQuotas maxDepth="32"
maxArrayLength="200000000"
maxStringContentLength="200000000"/>
</clearUsernameBinding>
</bindings>
但我们收到了这个错误:
无法识别的属性“maxReceivedMessageSize”
如何使用ClearUserNameBinding更改默认消息大小?我们通过以下步骤找到了解决方案: 我们修改
ClearUserNameBinding
的代码如下:
AutoSecuredHttpTransportElement()
构造函数中,将值初始化为可能的最大值
public AutoSecuredHttpTransportElement()
{
MaxReceivedMessageSize = int.MaxValue;
MaxBufferSize = int.MaxValue;
MaxBufferPoolSize = long.MaxValue;
}
CreateBindingElements()
方法中创建XMLDictionaryReaderQutotas对象,并在TextMessageEncodingBindingElement
上设置相同的值。以下是此方法的修改版本
public override BindingElementCollection CreateBindingElements()
{
XmlDictionaryReaderQuotas rqMax = XmlDictionaryReaderQuotas.Max;
TextMessageEncodingBindingElement textBE = new TextMessageEncodingBindingElement();
textBE.MessageVersion = this.messageVersion;
rqMax.CopyTo(textBE.ReaderQuotas);
var res = new BindingElementCollection();
res.Add(textBE);
res.Add(SecurityBindingElement.CreateUserNameOverTransportBindingElement());
res.Add(new AutoSecuredHttpTransportElement());
return res;
}
<bindings>
<clearUsernameBinding>
<binding name="myClearUsernameBinding" />
</clearUsernameBinding>
</bindings>
最后,我们更新服务器和客户端中的引用。Downvoter,您能解释一下原因吗?