2010-03-16 62 views
14

我想以编程方式将MaxReceivedMessageSize属性设置为一些更高的限制(由于(400)错误的请求错误)在我的客户端。 这是我使用的代码...如何在使用WCF客户端时以编程方式设置MaxReceivedMessageSize?

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

我的服务URL是动态的,因此不能使用的web.config。

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

我在做什么错?
任何帮助表示赞赏。
感谢
普拉特

回答

20

您是否尝试过重新排序的电话,让你实例化客户端之前设定的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 
相关问题