ฉันกำลังเรียกบริการเว็บ WCF ของฉันโดยใช้ jQuery $.ajax json POST
หนึ่งในพารามิเตอร์อินพุตยาวมาก - มากกว่า 8000 ไบต์ ข้อมูลในนั้นเป็นรายการ GUID ที่คั่นด้วยเครื่องหมายจุลภาค เช่น "78dace54-1eea-4b31-8a43-dcd01e172d14,ce485e64-e7c6-481c-a424-2624371180aa,ede4c606-f743-4e0a-a8cc-59bcffa7feda ,f0a81ed1-80db- 4f6d-92d7-2fc47759a409".
เมื่อพารามิเตอร์นั้นยาว 8176 ไบต์ คำขอจะสำเร็จ เมื่อเป็น 8213 (อีกหนึ่งลูกน้ำและ GUID) - คำขอล้มเหลว
ล้มเหลวจากเบราว์เซอร์และจาก Fiddler (พร็อกซีการดีบัก HTTP) . ฉันเพิ่มสิ่งนี้ลงในการกำหนดค่าบริการเว็บ:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
</scripting>
</system.web.extensions>
นั่นไม่ได้สร้างความแตกต่างใด ๆ คำขอยังคงล้มเหลวสำหรับพารามิเตอร์อินพุตที่มีความยาวเกิน 8176 ไบต์
พารามิเตอร์อินพุตนั้นแมปลงใน String ที่ฝั่ง WCF
ฉันพลาดอะไรไป? ขอบคุณ!
อัปเดต นี่เป็นการแก้ปัญหาของฉัน: ปรากฎว่าการตั้งค่านี้ควบคุมความยาวข้อความ JSON ทั้งหมด
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
มีการตั้งค่าอื่นที่ควบคุมความยาวสูงสุดสำหรับแต่ละพารามิเตอร์:
<bindings>
<webHttpBinding>
<binding name="Binding_Name" maxReceivedMessageSize="900000">
<readerQuotas maxDepth="32" maxStringContentLength="900000" maxBytesPerRead="900000" maxArrayLength="120000" maxNameTableCharCount="120000"/>
</binding>
</webHttpBinding>
</bindings>
นอกจากนี้ อย่าลืมตั้งค่านี้ด้วย:
<system.web>
<httpRuntime maxRequestLength="900000"/>
หวังว่านี่จะช่วยบรรเทาอาการปวดหัวได้บ้าง!