Tôi có một khách hàng năng động cho một dịch vụ. Làm thế nào tôi có thể thay đổi tài sản ReaderQuotas của nó endpoint ràng buộc?Sửa đổi điểm cuối ReaderQuotas theo chương trình
tôi đã cố gắng như thế này nhưng nó không hoạt động ...
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;
}
Ngay cả sau khi làm điều này các ReaderQuotas giá trị vẫn là những mặc định.
Tôi cũng đã cố gắng như thế này và vẫn không hoạt động:
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;
}
}
tôi cần điều này để tôi có thể gửi nhiều hơn 8KB đến dịch vụ.
+1 đề cập đến những điều này phải được thiết lập trước khi các proxy client và/hoặc máy chủ dịch vụ được tạo ra. Khi được tạo, chúng không thay đổi. –
Xin chào Marc, Cảm ơn bạn đã trả lời, nhưng tôi không biết loại ràng buộc đó là gì, đó là lý do tại sao tôi cần phải làm điều đó sau khi ràng buộc được tạo ra. Bất kỳ đề xuất nào khác? Cảm ơn, Adrya – Adrya
Ý của bạn là gì, bạn không biết nó là loại ràng buộc gì. Trong ServiceHostFactory, chỉ cần nhìn vào ràng buộc và sửa đổi hạn ngạch nếu bạn cần. Nếu những gì bạn đang nói là, bạn không biết bạn cần phải sửa đổi các hạn ngạch cho đến sau khi bạn sử dụng các ràng buộc, sau đó .. có thể thiết lập một lá cờ và sau đó khởi động lại máy chủ (hoặc proxy của khách hàng). – Cheeso