Mam klienta dynamicznego do usługi. Jak mogę zmienić właściwość ReaderQuotas powiązania punktu końcowego?Modyfikuj punkt końcowy ReaderQuotas programowo
Próbowałem tak, ale to nie działa ...
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;
}
Nawet po zrobieniu tego z ReaderQuotas wartości pozostają te domyślne.
Próbowałem też tak i nadal nie działa:
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;
}
}
muszę to więc mogę wysłać więcej niż 8 kb do usługi.
+1 dla wspomnieć te rzeczy muszą być ustawione przed proxy klienta i/lub host usługi są tworzone. Raz utworzone, są niezmienne. –
Cześć Marc, Dziękuję za odpowiedź, ale nie wiem, jaki rodzaj wiązania jest, dlatego muszę to zrobić po utworzeniu wiązania. Jakieś inne sugestie? Dzięki, Adrya – Adrya
Co masz na myśli, nie wiesz, jakie to wiążące. W ServiceHostFactory wystarczy spojrzeć na wiązanie i zmodyfikować limit, jeśli zajdzie taka potrzeba. Jeśli mówisz, że nie musisz modyfikować limitu, dopóki nie użyjesz wiązania, możesz ... ustawić flagę, a następnie zrestartować hosta (lub proxy klienta). – Cheeso