Saya memanggil layanan Web WCF saya menggunakan jQuery $.ajax json POST.
Salah satu parameter masukan sangat panjang - lebih dari 8000 byte. Data di dalamnya adalah daftar GUID yang dipisahkan koma, seperti ini "78dace54-1eea-4b31-8a43-dcd01e172d14,ce485e64-e7c6-481c-a424-2624371180aa,ede4c606-f743-4e0a-a8cc-59bcffa7feda, f0a81ed1-80db- 4f6d-92d7-2fc47759a409".
Bila panjang parameter tersebut 8176 byte, permintaan berhasil. Jika 8213 (satu koma dan GUID lagi) - permintaan gagal.
Gagal dari browser dan dari Fiddler (proksi debug HTTP) . Saya menambahkan ini ke konfigurasi layanan web:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
</scripting>
</system.web.extensions>
Itu tidak ada bedanya, permintaan masih gagal untuk parameter input yang panjangnya lebih dari 8176 byte.
Param input tersebut dipetakan ke dalam sebuah String di sisi WCF.
Apa yang saya lewatkan? Terima kasih!
UPDATE, ini menyelesaikan masalah saya: Ternyata pengaturan ini mengontrol total panjang pesan JSON
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
Ada pengaturan lain yang mengontrol panjang maksimum untuk masing-masing parameter:
<bindings>
<webHttpBinding>
<binding name="Binding_Name" maxReceivedMessageSize="900000">
<readerQuotas maxDepth="32" maxStringContentLength="900000" maxBytesPerRead="900000" maxArrayLength="120000" maxNameTableCharCount="120000"/>
</binding>
</webHttpBinding>
</bindings>
Juga, pastikan untuk mengatur ini:
<system.web>
<httpRuntime maxRequestLength="900000"/>
Semoga ini bisa mengatasi sakit kepala di luar sana!