2010-03-16 33 views
14

Tôi muốn đặt thuộc tính MaxReceivedMessageSize thành một số giới hạn cao hơn (Do (400) Lỗi yêu cầu không hợp lệ) trong ứng dụng khách của tôi theo chương trình. Đây là mã tôi đang sử dụng ...Làm thế nào để thiết lập MaxReceivedMessageSize lập trình khi sử dụng WCF Client?

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

url dịch vụ của tôi là năng động và do đó không thể sử dụng web.config.

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

Tôi đang làm gì sai?
Bất kỳ trợ giúp nào được đánh giá cao.
Cảm ơn
Pratt

Trả lời

20

Bạn đã cố gắng tái đặt hàng các cuộc gọi để bạn thiết lập các MaxReceivedMessageSize trước instantiating khách hàng? ví dụ:

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

Điều này có thể hoặc không thể giúp lỗi 400 của bạn.

8

Tôi đã có vấn đề tương tự trong WCF dịch vụ của tôi và tôi giải quyết nó với:

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

này hoạt động tốt, mặc dù nó không phải là rõ ràng. Nó giữ lại tất cả các thuộc tính ràng buộc hiện tại và chỉ điều chỉnh MaxReceivedMessageSize (trong đó, tình cờ, cũng tăng MaxBufferSize với cùng kích thước).

Dim oClient as WcfClient = New WcfClient 
CType(oClient.Endpoint.Binding, ServiceModel.BasicHttpBinding).MaxReceivedMessageSize = Int32.MaxValue 
Các vấn đề liên quan