2010-03-16 9 views
14

मैं अपने क्लाइंट में प्रोग्रामेटिक रूप से MaxReceivedMessageSize प्रॉपर्टी को कुछ उच्च सीमा ((400) खराब अनुरोध त्रुटि के कारण) सेट करना चाहता हूं। इस कोड मैं का उपयोग कर रहा है ...WCF क्लाइंट का उपयोग करते समय प्रोग्रामरिक रूप से MaxReceivedMessageSize को कैसे सेट करें?

WCFServiceTestClient wcfClient = 
    new WCFServiceTestClient(new wsHttpBinding(), strServiceURL); 

मेरी सेवा यूआरएल गतिशील है और इसलिए web.config उपयोग नहीं कर सकते।

//The following code doesnt seem to take effect 
((WSHttpBinding)wcfClient.ChannelFactory.Endpoint.Binding) 
     .MaxReceivedMessageSize = 2147483647; 

क्या मैं गलत कर रहा हूँ?
किसी भी मदद की सराहना की है।
धन्यवाद
प्रैट

उत्तर

20

आप फिर से आदेश देने कॉल करने की कोशिश की है, ताकि आप ग्राहक instantiating से पहले MaxReceivedMessageSize सेट है? उदाहरण के लिए,

var binding = new wsHttpBinding(); 
binding.MaxReceivedMessageSize = Int32.MaxValue; 
var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 

यह आपकी 400 त्रुटि में मदद कर सकता है या नहीं भी हो सकता है।

8

मैं अपने WCF सेवा में इसी तरह की समस्या नहीं थी और मैं के साथ इसे हल:,

CustomBinding binding = (CustomBinding)PDAServiceContractClient.CreateDefaultBinding(); 
      HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement(); 
      httpBindingElement.MaxBufferSize = Int32.MaxValue; 
      httpBindingElement.MaxReceivedMessageSize = Int32.MaxValue; 
      binding.Elements.Add(httpBindingElement); 

      string address = PDAServiceContractClient.EndpointAddress.Uri.ToString(); 
      m_proxy = new PDAServiceContractClient(binding, new EndpointAddress(address)); 
0

यह अच्छी तरह से काम करता है, हालांकि यह स्पष्ट नहीं है। यह सभी मौजूदा बाध्यकारी गुणों को बरकरार रखता है और केवल MaxReceivedMessageSize समायोजित करता है (जो संयोग से, उसी आकार में MaxBufferSize भी बढ़ाता है)।

Dim oClient as WcfClient = New WcfClient 
CType(oClient.Endpoint.Binding, ServiceModel.BasicHttpBinding).MaxReceivedMessageSize = Int32.MaxValue 
संबंधित मुद्दे