Tôi đã nhìn thấy vấn đề này được đăng một triệu lần, nhưng không ai trong số các giải pháp đã làm việc cho tôi ... Vì vậy, ở đây tôi đi:Vấn đề với yêu cầu lớn trong WCF
Khi gọi một dịch vụ WCF tôi nhận được như sau lỗi:
The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://BlanketImportService.ServiceContracts/2011/06:request . The InnerException message was 'There was an error deserializing the object of type BlanketImport.BlanketImportRequest. The maximum array length quota (16384) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 44440.'. Please see InnerException for more details.
Tôi đã sửa đổi readerQuotas
trên cả máy chủ khách và đã áp dụng thẻ bindingConfiguration.
Dưới đây là cấu hình máy chủ:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="BlanketImport">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" bindingNamespace="http://BlanketImportService.ServiceContracts/2011/06" contract="BlanketImport.IBlanketImport">
</endpoint>
</service>
</services>
Và cấu hình client:
<bindings>
<basicHttpBinding>
<binding name="BilagImportBinding" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/BlanketImport/BlanketService.svc"
binding="basicHttpBinding" bindingConfiguration="BilagImportBinding" contract="BlanketServiceReference.IBlanketService"
name="BasicHttpBinding_IBlanketService" />
</client>
Tên dịch vụ chỉ là "BlanketImport" hay nó nằm trong không gian tên (chẳng hạn như BlanketImport.BlanketImport)? Giá trị của thuộc tính "name" của phần tử '' phải là * tên đủ điều kiện * của dịch vụ (không gian tên + tên loại), nếu không WCF sẽ không tìm thấy nó. –
carlosfigueira
Đó là năm 2015 và các thiết lập cấu hình wcf tiếp tục là một bí ẩn đối với hầu hết chúng ta. – abhi