(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?

Mengomentari pertanyaan (1)
Larutan

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 mengatur readerQuotas.









Komentar (10)

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:








Komentar (5)

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.

Komentar (3)

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:

IIS7 - (413) Meminta Badan Terlalu Besar bila tersambung ke layanan.

. Masalah

Saya menyadari bahwa name="," atribut dalam <layanan> tag web.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

Komentar (2)

Ini membantu saya untuk menyelesaikan masalah (salah satu line - split untuk dibaca / copy-kemampuan):

C:\Windows\System32\inetsrv\appcmd  set config "YOUR_WEBSITE_NAME" 
     -section:system.webServer/serverRuntime /uploadReadAheadSize:"2147483647" 
     /commit:apphost
Komentar (1)

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:

  1. Melalui cmd atau powershell, jalankan 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.
  2. Anda harus melihat bahwa "Bernegosiasi Sertifikat Klien" dinonaktifkan. Ini adalah masalah pengaturan; langkah-langkah berikut akan menunjukkan cara untuk mengaktifkan.
  3. Sayangnya tidak ada cara untuk mengubah yang sudah ada binding; anda'll harus menghapus dan menambahkan kembali itu. Menjalankan netsh http menghapus sslcert <ipaddress>:<pelabuhan> mana <ipaddress>:<pelabuhan> adalah IP:port yang ditunjukkan pada konfigurasi yang anda simpan sebelumnya.
  4. Sekarang anda dapat menambahkan kembali mengikat. Anda dapat melihat valid parameter untuk 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 mengetik netsh dan kemudian mengeluarkan perintah seperti http tambahkan sslcert ipport=... dalam rangka untuk itu untuk bekerja.

[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/cc307220(v=vs. 85).aspx

Komentar (1)

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

Komentar (1)

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

Komentar (0)

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

Komentar (0)

Punya kesalahan yang sama pada IIS Express dengan Visual Studio 2017.

HTTP Error 413.0 - Permintaan Badan Terlalu Besar

halaman tidak ditampilkan karena permintaan badan terlalu besar.

kemungkinan penyebab:

  • Web server menolak untuk melayani permintaan karena permintaan badan terlalu besar.

  • Web server tidak dapat melayani permintaan karena itu mencoba untuk bernegosiasi sertifikat klien tetapi permintaan badan terlalu besar.

  • permintaan URL atau fisik pemetaan URL (yaitu, fisik file sistem jalan ke URL's konten) terlalu panjang.

hal-Hal yang dapat anda coba:

  • Verifikasi bahwa permintaan adalah valid.

  • Jika menggunakan sertifikat klien, cobalah:

  • Meningkatkan system.webServer/serverRuntime@uploadReadAheadSize

  • Konfigurasi SSL akhir untuk bernegosiasi sertifikat klien sebagai bagian dari awal SSL handshake. (netsh http tambahkan sslcert ... clientcertnegotiation=enable) .vs\config\applicationhost.config

Memecahkan masalah ini dengan editing \.vs\config\applicationhost.config. Switch serverRuntime dari Menolak untuk Memungkinkan seperti ini:

<section name="serverRuntime" overrideModeDefault="Allow" />

Jika nilai ini tidak dapat diedit, anda akan mendapatkan error seperti ini ketika setting uploadReadAheadSize:

HTTP Error 500.19 - Internal Server Error

halaman Yang diminta tidak dapat diakses karena terkait konfigurasi data untuk halaman yang tidak valid.

Ini bagian konfigurasi tidak dapat digunakan di jalan ini. Hal ini terjadi ketika bagian yang terkunci pada orang tua tingkat. Penguncian yang lebih baik dengan default (overrideModeDefault="Menyangkal"), atau diatur secara eksplisit oleh lokasi tag dengan overrideMode="Menyangkal" atau warisan allowOverride="salah".

Kemudian edit Web.config` dengan nilai berikut:



...
Komentar (0)

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.

Komentar (0)

untuk masalah remote server kembali tak terduga respon: (413) Meminta Badan Terlalu Besar pada WCF dengan Resful

silakan lihat saya menjelaskan konfigurasi












































































Komentar (0)

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:




    /

Komentar (0)