(413) Meminta Badan Terlalu Besar | uploadReadAheadSize
I've ditulis layanan WCF dengan .NET 4.0, yang di-host pada Windows 7 x64
Ultimate system dengan IIS 7.5.
Salah satu metode layanan memiliki 'objek' sebagai argumen dan I'm mencoba untuk mengirim byte[] yang berisi gambar.
Asalkan ukuran file dari gambar ini kurang maka kira-kira. 48KB, semua berjalan dengan baik. Tapi jika saya'm mencoba untuk meng-upload gambar yang lebih besar, layanan WCF kembali kesalahan: (413) Meminta Badan Terlalu Besar.
Jadi ofcourse I've menghabiskan 3 jam Googling pesan kesalahan dan setiap topik I've melihat tentang subjek ini menunjukkan peningkatan 'uploadReadAheadSize' properti.
Jadi apa yang saya've dilakukan adalah dengan menggunakan perintah berikut (10485760 = 10MB):
"appcmd.exe set config-bagian:sistem.webserver/serverruntime/uploadreadaheadsize: 10485760 /komitmen:apphost"
"cscript adsutil.vbs set w3svc/<APP_ID>/uploadreadaheadsize 10485760"
I've juga digunakan IIS Manager untuk mengatur nilai dengan membuka situs dan akan "Konfigurasi Editor" di bawah Manajemen. Sayangnya saya'm masih mendapatkan Permintaan Badan Terlalu Besar kesalahan dan itu's mendapatkan benar-benar frustasi!
Jadi tidak ada yang tahu apa lagi yang bisa saya mencoba untuk memperbaiki kesalahan ini?
Bahwa tidak masalah IIS tapi masalah WCF. WCF secara default batas pesan untuk 65KB untuk menghindari penolakan serangan layanan dengan pesan besar. Juga jika anda don't menggunakan MTOM ini mengirimkan byte[] untuk base64 encoded string (33% peningkatan ukuran) => 48KB * 1,33 = 64KB
Untuk memecahkan masalah ini, anda harus mengkonfigurasi layanan anda untuk menerima pesan yang lebih panjang. Masalah ini sebelumnya dipecat 400 Bad Request error tapi dalam versi yang lebih baru WCF mulai menggunakan 413 yang benar kode status untuk jenis kesalahan.
Anda perlu untuk mengatur
maxReceivedMessageSize
dalam mengikat anda. Anda juga perlu mengaturreaderQuotas
.Saya sedang mengalami masalah yang sama dengan IIS 7.5 dengan WCF REST Layanan. Mencoba untuk meng-upload melalui POSTING file di atas 65k dan itu akan kembali Error 413 "Permintaan Badan terlalu besar".
Hal pertama yang perlu anda pahami adalah apa yang mengikat anda've dikonfigurasi di web.config. Berikut ini's artikel bagus...
https://stackoverflow.com/questions/2650785/basichttpbinding-vs-wshttpbinding-vs-webhttpbinding
Jika anda memiliki SISA layanan maka anda perlu mengkonfigurasi itu sebagai "webHttpBinding". Berikut ini's the fix:
Aku punya masalah yang sama dan pengaturan
uploadReadAheadSize
soal ini:http://www.iis.net/configreference/system.webserver/serverruntime
"nilai harus antara 0 dan 2147483647."
Hal ini mudah mengaturnya di applicationHost.config-phk jika anda don't ingin melakukan cmd-hal.
Terletak di
WindowsFOLDER\System32\inetsrv\config
(2008 server).Anda harus membukanya dengan notepad. Melakukan Backup file terlebih dahulu.
Menurut komentar di config cara yang disarankan untuk membuka bagian ini dengan menggunakan tag lokasi:
Sehingga anda dapat menulis di bagian bawah (karena itu doesn't ada sebelumnya). Saya menulis
maxvalue
di sini - menulis nilai anda sendiri jika anda inginkan.Jika anda memasukkannya terakhir sebelum
</konfigurasi>
misalnya, anda tahu di mana anda telah ini.Harapan yang memecahkan masalah anda. Itu SSL overhead masalah bagi saya, di mana terlalu banyak posting dibekukan aplikasi, membesarkan (413) Meminta Badan Terlalu Besar kesalahan.
Saya menerima pesan kesalahan ini, meskipun saya telah
max
pengaturan diatur dalam mengikat saya WCF service config:Tampaknya seolah-olah ini mengikat pengaturan weren't yang diterapkan, sehingga pesan galat berikut:
. Masalah
Saya menyadari bahwa
name=","
atribut dalam<layanan>
tagweb.config
adalah tidak gratis bidang teks, karena saya pikir itu. Ini adalah memenuhi syarat nama dari pelaksanaan kontrak service seperti yang disebutkan dalam [dokumentasi ini halaman][1].Jika itu doesn't pertandingan, maka pengaturan mengikat won't dapat diterapkan!
Saya berharap bahwa menyelamatkan orang sakit...
[1]: https://msdn.microsoft.com/en-us/library/ms733932(v=vs. 110).aspx
Ini membantu saya untuk menyelesaikan masalah (salah satu line - split untuk dibaca / copy-kemampuan):
Jika anda're menjalankan ke dalam masalah ini meskipun mencoba semua solusi di thread ini, dan anda're menghubungkan ke layanan melalui SSL (misalnya https), ini mungkin bisa membantu:
http://forums.newatlanta.com/messages.cfm?threadid=554611A2-E03F-43DB-92F996F4B6222BC0&#top
Untuk meringkas (jika link mati di masa depan), jika permintaan cukup besar sertifikat negosiasi antara klien dan layanan akan gagal secara acak. Untuk menjaga hal ini terjadi, anda'll perlu mengaktifkan pengaturan tertentu pada SSL anda binding. Dari IIS server, berikut adalah langkah-langkah anda'akan perlu untuk mengambil:
netsh http menunjukkan sslcert
. Ini akan memberikan anda konfigurasi anda saat ini. Anda'll ingin menyimpan ini entah bagaimana sehingga anda dapat referensi lagi nanti.netsh http menghapus sslcert <ipaddress>:<pelabuhan>
mana<ipaddress>:<pelabuhan>
adalah IP:port yang ditunjukkan pada konfigurasi yang anda simpan sebelumnya.netsh http tambahkan sslcert
[di sini (MSDN)][1] namun dalam kebanyakan kasus, perintah anda akan terlihat seperti ini:netsh http tambahkan sslcert ipport=<ipaddress>:<pelabuhan> appid=<ID aplikasi dari disimpan config termasuk {}> certhash=<sertifikat hash dari disimpan config> certstorename=<sertifikat nama toko diselamatkan dari config> clientcertnegotiation=enable
Jika anda memiliki beberapa SSL binding, anda'll ulangi proses untuk masing-masing dari mereka. Mudah-mudahan ini bisa membantu menyelamatkan orang lain dengan jam dan jam sakit kepala masalah ini disebabkan saya.
EDIT: Dalam pengalaman saya, anda bisa't benar-benar menjalankan
netsh http tambahkan sslcert
perintah dari baris perintah ini diatas. Anda'akan perlu untuk memasukkan netsh prompt terlebih dahulu dengan mengetiknetsh
dan kemudian mengeluarkan perintah sepertihttp tambahkan sslcert ipport=...
dalam rangka untuk itu untuk bekerja.[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/cc307220(v=vs. 85).aspx
Bagi saya, setting
uploadReadAheadSize
untuk int.MaxValue juga tetap masalah, setelah juga meningkatkan batas pada WCF mengikat.Tampaknya, bila menggunakan SSL, seluruh permintaan badan tubuh dimuat, untuk yang ini metabase properti yang digunakan.
Untuk info lebih lanjut, lihat:
https://stackoverflow.com/questions/22762311/the-page-was-not-displayed-because-the-request-entity-is-too-large-iis7
Untuk orang lain yang pernah mencari IIS WCF error 413 : Permintaan entitas yang besar dan menggunakan layanan WCF di Sharepoint, ini adalah informasi untuk anda. Pengaturan dalam aplikasi host dan web.konfigurasi yang disarankan di situs lain/posting don't bekerja di SharePoint jika menggunakan MultipleBaseAddressBasicHttpBindingservicehostfactory. Anda dapat menggunakan SP Powershell untuk mendapatkan SPWebService.Layanan konten, membuat yang baru SPWcvSettings objek dan memperbarui pengaturan seperti di atas untuk layanan anda (mereka tidak't ada). Ingatlah untuk hanya menggunakan nama layanan (misalnya [yourservice.svc]) ketika membuat dan menambahkan pengaturan. Lihat situs ini untuk info lebih lanjut https://robertsep.wordpress.com/2010/12/21/set-maximum-upload-filesize-sharepoint-wcf-service
Dalam kasus saya, saya harus meningkatkan "Maksimum menerima pesan size" Menerima Lokasi di BizTalk. Yang juga memiliki nilai default dari 64K dan setiap pesan itu terpental oleh BizTAlk terlepas dari apa yang saya dikonfigurasi di web saya.config
Punya kesalahan yang sama pada IIS Express dengan Visual Studio 2017.
Memecahkan masalah ini dengan editing
\.vs\config\applicationhost.config
. SwitchserverRuntime
dariMenolak
untukMemungkinkan
seperti ini:Jika nilai ini tidak dapat diedit, anda akan mendapatkan error seperti ini ketika setting
uploadReadAheadSize
:Kemudian edit Web.config` dengan nilai berikut:
I've telah mampu memecahkan masalah ini dengan mengeksekusi panggilan boneka ( misalnya IsAlive kembali benar ) sebelum permintaan dengan konten yang besar yang sama wcf channel/klien. Rupanya ssl negosiasi dilakukan pada panggilan pertama. Jadi tidak perlu untuk meningkatkan Uploadreadaheadsize.
untuk masalah remote server kembali tak terduga respon: (413) Meminta Badan Terlalu Besar pada WCF dengan Resful
silakan lihat saya menjelaskan konfigurasi
Dalam kasus saya, saya mendapatkan pesan kesalahan ini karena saya mengubah layanan's namespace dan pelayanan tag menunjuk ke yang lebih tua namespace. Aku refresh namespace dan kesalahan menghilang: