Tôi đang gọi dịch vụ web WCF của tôi bằng cách sử dụng jQuery $ .ajax json POST.
Một trong các thông số đầu vào rất dài - trên 8000 byte. Dữ liệu trong đó là danh sách GUID được phân tách bằng dấu phẩy, như sau "78dace54-1eea-4b31-8a43-dcd01e172d14, ce485e64-e7c6-481c-a424-2624371180aa, ede4c606-f743-4e0a-a8cc-59bcffa7feda, f0a81ed1-80db- 4f6d-92d7-2fc47759a409 ".
Khi thông số đó là 8176 bytes dài, yêu cầu thành công. Khi đó là (thêm một dấu phẩy và GUID) - yêu cầu không thành công.
Trình duyệt không hoạt động và từ Fiddler (proxy gỡ lỗi HTTP). tôi thêm này để cấu hình webservice:Giới hạn kích thước tham số JSON
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
</scripting>
</system.web.extensions>
Điều đó không thực hiện bất kỳ sự khác biệt, theo yêu cầu vẫn không cho param đầu vào dài hơn 8176 byte.
Tham số đầu vào đó ánh xạ vào một Chuỗi ở phía WCF.
Tôi đang thiếu gì? Cảm ơn bạn!
CẬP NHẬT, điều này giải quyết vấn đề của tôi: Hóa ra rằng thiết lập này điều khiển tổng JSON dài nhắn
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
Có một thiết lập điều khiển chiều dài tối đa cho các thông số cá nhân:
<bindings>
<webHttpBinding>
<binding name="Binding_Name" maxReceivedMessageSize="900000">
<readerQuotas maxDepth="32" maxStringContentLength="900000" maxBytesPerRead="900000" maxArrayLength="120000" maxNameTableCharCount="120000"/>
</binding>
</webHttpBinding>
</bindings>
Cũng , hãy đảm bảo đặt điều này:
<system.web>
<httpRuntime maxRequestLength="900000"/>
Hy vọng điều này sẽ chăm sóc một số cơn đau đầu ở ngoài đó!
Bạn đã thử có danh sách GUID được chuyển dưới dạng mảng JSON chưa? –
IMO nó có thể là [điều trình duyệt] (http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string). –
Khi yêu cầu thành công, kích thước thực tế của yêu cầu/trả lời http được thấy trong Fiddler là bao nhiêu? –