Saya sedang membangun situs di mana saya ingin membuat sisi klien file dari nilai elemen textarea.
Saya memiliki kode untuk melakukan ini, tetapi saya mendapatkan kesalahan ini
Kesalahan HTTP 404.15 - Tidak Ditemukan Modul pemfilteran permintaan dikonfigurasi untuk menolak permintaan yang string kueri terlalu panjang.
Adakah cara untuk menimpanya sehingga saya dapat memproses permintaan dengan ukuran berapa pun?
Jika tidak, apakah ada cara untuk menghasilkan file sisi klien tanpa menggunakan filesystem / objek x aktif?
Terima kasih
c#
javascript
asp.net-mvc
web-config
query-string
some_bloody_fool
sumber
sumber
Jawaban:
Tambahkan berikut ini ke web.config Anda:
<system.webServer> <security> <requestFiltering> <requestLimits maxQueryString="32768"/> </requestFiltering> </security> </system.webServer>
Lihat:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
Diperbarui untuk mencerminkan komentar.
Elemen requestLimits untuk requestFiltering [Skema Pengaturan IIS]
Anda mungkin harus menambahkan berikut ini di web.config Anda juga
<system.web> <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/> </system.web>
Lihat: httpRuntime Element (ASP.NET Settings Schema)
Tentu saja angka (32768 dan 65536) dalam pengaturan konfigurasi di atas hanyalah contoh. Anda tidak harus menggunakan nilai persis tersebut.
sumber
Dalam kasus saya (Visual Studio 2012 / IIS Express / ASP.NET MVC 4 app / .Net Framework 4.5) apa yang benar-benar berfungsi setelah 30 menit trial and error adalah menyetel
maxQueryStringLength
properti di<httpRuntime>
tag:<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />
maxQueryStringLength
default ke2048
.Lebih lanjut tentang itu di sini:
Memperluas Rentang URL yang Diizinkan
Saya mencoba mengaturnya
<system.webServer>
seperti yang disarankan @MattVarblow , tetapi tidak berhasil ... dan ini karena saya menggunakan IIS Express (berdasarkan IIS 8) pada mesin dev saya dengan Windows 8.Ketika saya menerapkan aplikasi saya ke lingkungan produksi (Windows Server 2008 R2 dengan IIS 7), IE 10 mulai mengembalikan kesalahan 404 dalam permintaan AJAX dengan string kueri yang panjang. Kemudian saya berpikir bahwa masalahnya terkait dengan string kueri dan mencoba jawaban @ MattVarblow. Ini baru saja bekerja di IIS 7. :)
sumber
Hal lain untuk diperiksa: jika situs Anda menggunakan MVC, ini dapat terjadi jika Anda menambahkan [Otorisasi] ke kelas pengontrol login Anda. Itu tidak dapat mengakses metode login karena tidak berwenang sehingga dialihkan ke metode login -> boom.
sumber
Jika Anda mengalami masalah ini saat menjalankan server web IIS 8.5 Anda dapat menggunakan metode berikut ini.
Pertama, temukan modul "Request Filtering" di situs IIS yang sedang Anda kerjakan, lalu klik dua kali ...
Selanjutnya, Anda perlu mengklik kanan di area putih yang ditunjukkan di bawah ini, lalu klik opsi menu konteks yang disebut "Edit Pengaturan Fitur" .
Kemudian hal terakhir yang harus dilakukan adalah mengubah nilai "String kueri maksimum (Bytes)" dari 2048 menjadi sesuatu yang lebih sesuai seperti 5000 untuk kebutuhan Anda.
sumber
Saya memiliki masalah serupa saat mencoba menerapkan Aplikasi Web ASP ke IIS 8. Untuk memperbaikinya, saya melakukan seperti yang disarankan Matt dan Leniel di atas. Tetapi juga harus mengkonfigurasi pengaturan Otentikasi situs saya untuk mengaktifkan Otentikasi Anonim. Dan itu berhasil untuk saya.
sumber
Saya harus menambahkan [AllowAnonymous] ke fungsi ActionResult di halaman login saya karena pengguna tersebut belum diautentikasi.
sumber
Jika situs web Anda menggunakan otentikasi, tetapi Anda tidak memiliki metode otentikasi yang benar yang disiapkan di IIS (misalnya Dasar, Formulir, dll.) Maka browser akan terjebak dalam loop pengalihan. Ini menyebabkan url pengalihan menjadi semakin lama hingga meledak.
sumber
Ini juga akan menghasilkan kesalahan ketika Anda melewatkan string besar dalam parameter panggilan ajax.
jadi untuk itu selalu gunakan jenis posting di ajax akan menyelesaikan masalah Anda 100% dan tidak perlu mengatur panjangnya di web.config.
// var UserId = larik 1000 id pengguna
$ .ajax ({global: false, url: SitePath + "/ User / getAussizzMembersData", "data": {UserIds: UserId}, "type": "POST", "dataType": "JSON"}}
sumber
Untuk mengatasi masalah ini, periksa di kode sumber apakah
Form
tag memiliki properti dalammethod
status get / set.Jika demikian,
method
properti itu harus disingkirkan.sumber