- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个服务的动态客户端。我如何更改其端点绑定(bind)的 ReaderQuotas 属性?
我这样试过,但没用...
DynamicProxyFactory factory = new DynamicProxyFactory(m_serviceWsdlUri);
foreach (ServiceEndpoint endpoint in factory.Endpoints)
{
Binding binding = endpoint.Binding;
binding.GetProperty<XmlDictionaryReaderQuotas>(new BindingParameterCollection()).MaxArrayLength = 2147483647
binding.GetProperty<XmlDictionaryReaderQuotas>(new BindingParameterCollection()).MaxBytesPerRead =2147483647;
binding.GetProperty<XmlDictionaryReaderQuotas>(new BindingParameterCollection()).MaxDepth = 2147483647;
binding.GetProperty<XmlDictionaryReaderQuotas>(new BindingParameterCollection()).MaxNameTableCharCount = 2147483647;
binding.GetProperty<XmlDictionaryReaderQuotas>(new BindingParameterCollection()).MaxStringContentLength = 2147483647;
}
即使在执行此操作后,ReaderQuotas 值仍保持默认值。
我也这样试过,还是不行:
DynamicProxyFactory factory = new DynamicProxyFactory(m_serviceWsdlUri);
foreach (ServiceEndpoint endpoint in factory.Endpoints)
{
System.ServiceModel.Channels.BindingElementCollection bec = endpoint.Binding.CreateBindingElements();
System.ServiceModel.Channels.TransportBindingElement tbe = bec.Find<System.ServiceModel.Channels.TransportBindingElement>();
tbe.MaxReceivedMessageSize = 2147483647;
tbe.MaxBufferPoolSize = 2147483647;
TextMessageEncodingBindingElement textBE = bec.Find<TextMessageEncodingBindingElement>();
if (textBE != null)
{
textBE.ReaderQuotas.MaxStringContentLength = 2147483647;
textBE.ReaderQuotas.MaxArrayLength = 2147483647;
textBE.ReaderQuotas.MaxBytesPerRead = 2147483647;
textBE.ReaderQuotas.MaxDepth = 2147483647;
textBE.ReaderQuotas.MaxNameTableCharCount = 2147483647;
}
}
我需要这个,这样我就可以向服务发送超过 8kb 的数据。
最佳答案
在创建绑定(bind)后在 BindingElement 上设置配额对该绑定(bind)没有影响。
编辑(因为您不知道使用什么绑定(bind)):
您可以使用反射来设置属性。请注意,您应该确保 Binding 在设置之前确实具有该属性。并非所有绑定(bind)都具有此属性。如果您尝试在不支持它的绑定(bind)上设置它,该示例将抛出异常。
Binding binding = endpoint.Binding;
XmlDictionaryReaderQuotas myReaderQuotas = new XmlDictionaryReaderQuotas();
myReaderQuotas.MaxStringContentLength = _sanebutusablelimit_;
myReaderQuotas.MaxArrayLength = _sanebutusablelimit_;
myReaderQuotas.MaxBytesPerRead = _sanebutusablelimit_;
myReaderQuotas.MaxDepth = _sanebutusablelimit_;
myReaderQuotas.MaxNameTableCharCount = _sanebutusablelimit_;
binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null);
希望对您有所帮助。
关于c# - 以编程方式修改端点 ReaderQuotas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/969479/
我有一个服务的动态客户端。我如何更改其端点绑定(bind)的 ReaderQuotas 属性? 我这样试过,但没用... DynamicProxyFactory factory = new Dyna
如果 WCF 服务在其响应消息中返回一个字节数组,则数据有可能超过 16384 字节的默认长度。发生这种情况时,异常将类似于 The maximum array length quota (16384
我有一个带有 HTTP 绑定(bind)的 WCF 服务。 AppConif 文件 maxDepth="32"。这适用于除 ONE 以外的所有机器。 我的问题是当 maxDepth="32"时为什么这
谁能解释一下 WCF 大部头书?具体maxArrayLength . 根据 MSDN : maxArrayLength A positive integer that specifies the ma
我希望将 100 MB 的数据从客户端应用程序传输到 WCF 服务。我在我的 web.config 中设置了 readerQuotas,但我读了一篇文章,其中他们建议使用 Request Limits
I gone through this MSDN link but could not get enough details 谁能给我解释一个场景,我需要在哪里以及为什么需要设置这个值。 当我尝试将数
BasicHttpBinding 类有一个 ReaderQuotas 属性,您可以访问该属性以覆盖 MaxArrayLength、MaxBytesPerRead 等属性等 在 CustomBindin
我是一名优秀的程序员,十分优秀!