का उपयोग करें मुझे यह पागल समस्या है जिसे मैं सौदा करने का प्रयास कर रहा हूं। मुझे पता है कि जब हमें बड़ी मात्रा में डेटा मिल रहा है तो हमें क्लाइंट .config फ़ाइल पर कोटा बढ़ाना होगा, लेकिन मुझे क्या करना चाहिए यदि मेरा क्लाइंट डब्ल्यूसीएफ सर्वर को "डेटा" विशाल डेटा भेज रहा है?आने वाले संदेशों के लिए अधिकतम संदेश आकार कोटा (65536) .... कोटा बढ़ाने के लिए, MaxReceivedMessageSize गुण
जब मैं छोटे आकार के इनपुट पैरामीटर भेज रहा हूं तो यह पूरी तरह से सामान्य काम करता है। दुर्भाग्य से, जब इनपुट बड़ा हो जाता है तो यह टूट जाता है।
डिबगर यह कहते हैं:
गलत अनुरोध, 400;
फ़ाइल का पता लगाने पर यह है:
अधिकतम भेजे गए संदेशों (65536) के लिए संदेश आकार कोटा हो गया है। कोटा बढ़ाने के लिए, उचित बाध्यकारी तत्व पर MaxReceivedMessageSize संपत्ति का उपयोग करें।
क्या सर्वर पक्ष पर इनकमिंग डेटा के इस कोटा को बढ़ाने का कोई तरीका है? यदि हां, तो कैसे?
यहाँ मेरी नमूना config संबंधित है भागों:
<bindings>
<basicHttpBinding>
<binding name="MyBasicHttpBinding"
closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00"
sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="MyWcfService">
<endpoint address="http://myservice..."
binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBinding"
name="MyBasicHttpBinding" contract="IMyContract" />
</service>
</services>
और यहां मेरे क्लाइंट-साइड कोड है (मैं इसे गतिशील बनाने):
var binding = new BasicHttpBinding();
binding.MaxBufferPoolSize = 2147483647;
binding.MaxBufferSize = 2147483647;
binding.MaxReceivedMessageSize = 2147483647;
binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.ReaderQuotas.MaxArrayLength = 2147483647;
binding.ReaderQuotas.MaxDepth = 2147483647;
binding.ReaderQuotas.MaxBytesPerRead = 2147483647;
var address = new EndpointAddress("http://mylocalservice..");
ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract>(binding, address);
foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
{
DataContractSerializerOperationBehavior dataContractBehavior =
op.Behaviors.Find<DataContractSerializerOperationBehavior>()
as DataContractSerializerOperationBehavior;
if (dataContractBehavior != null)
{
dataContractBehavior.MaxItemsInObjectGraph = 2147483646;
}
}
public IMyContract MyClientObject = factory.CreateChannel();
मैं कदम उल्लेख किया [यहां] द्वारा समस्या हल [1] [1]: http: // stackoverflow।कॉम/प्रश्न/7476853/wcf-error-max-number-of-items-that-can-be-serialized-or-deserialized-in-an/8656402 # 8656402 – Ram
अपने क्लाइंट साइड कोड में आप कोडर के माध्यम से रीडरक्वाट सेट कर रहे हैं तो नीचे उन्हें सेट करने का दृष्टिकोण है: XmlDictionaryReaderQuotas myReaderQuotas = new XmlDictionaryReaderQuotas(); myReaderQuotas.MaxStringContentLength = 2147483647; myReaderQuotas.MaxArrayLength = 2147483647; myReaderQuotas.MaxBytesPerRead = 2147483647; myReaderQuotas.MaxDepth = 64; myReaderQuotas.MaxNameTableCharCount = 2147483647; बाइंडिंग। गेट टाइप()। गेटप्रोपर्टी ("रीडरक्वोटास")। सेटवैल्यू (बाध्यकारी, myReaderQuotas, शून्य); – Rajesh