У меня есть динамический клиент для службы. Как я могу изменить свойство ReaderQuotas его привязки к конечной точке?Изменить конечную точку 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 на службу.
+1 за упоминание этих вещей должны быть установлен до прокси-клиента и/или узел служб созданы. После создания они неизменяемы. –
Привет, Марк, Спасибо за ответ, но я не знаю, что это за привязка, поэтому мне нужно сделать это после создания привязки. Любые другие предложения? Thanks, Adrya – Adrya
Что вы имеете в виду, вы не знаете, какое это обязательство. В ServiceHostFactory просто просмотрите привязку и измените квоту, если вам нужно. Если вы говорите, вы не знаете, что вам нужно изменить квоту до тех пор, пока вы не примените привязку, тогда .. можете установить флаг, а затем перезапустить хост (или клиентский прокси). – Cheeso