J'ai un client dynamique à un service. Comment puis-je modifier la propriété ReaderQuotas de sa liaison de point de terminaison?Modifier le point de terminaison ReaderQuotas par programme
J'ai essayé comme ça, mais ça ne marche pas ...
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;
}
Même après avoir fait cela, les valeurs ReaderQuotas restent celles par défaut.
J'ai essayé aussi comme ça et ne fonctionne toujours pas:
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;
}
}
je besoin de ce que je puisse envoyer plus de 8 Ko au service.
+1 pour mentionner ces choses doivent être réglés avant le proxy client et/ou hôte de service sont créés. Une fois créés, ils sont immuables. –
Salut Marc, Merci pour la réponse, mais je ne sais pas quel type de liaison c'est, c'est pourquoi je dois le faire après la création de la liaison. D'autres suggestions? Merci, Adrya – Adrya
Que voulez-vous dire, vous ne savez pas quel type de liaison il est. Dans ServiceHostFactory, il suffit de regarder dans la liaison et de modifier le quota si nécessaire. Si ce que vous dites est, vous ne savez pas que vous avez besoin de modifier le quota qu'après avoir utilisé la liaison, alors ..maybe définir un indicateur, puis redémarrer l'hôte (ou le proxy client). – Cheeso