Saya memiliki situs MVC3 di C #, saya memiliki tampilan tertentu yang diberi makan parameter kueri dari fungsi JavaScript, fungsi tersebut dialihkan ke situs melalui
window.location.href = "../ActionName?" + query_string;
query_string menjadi string parameter kueri dinamis yang dibuat oleh fungsi JavaScript.
Alasan keanehan ini adalah bahwa terkadang fungsi yang sama meneruskan URL ke formulir web ASP.Net karena harus menggunakan kontrol reportviewer , tindakan alternatifnya adalah menyimpan beberapa parameter dalam hal ini ia lolos ke tampilan. (Bisa menjelaskan lebih banyak jika itu tidak masuk akal)
Semuanya berfungsi dengan baik sampai saya memperkenalkan [Otorisasi] ke metode tindakan. Henti jika ada di tempatnya, berfungsi dengan baik tanpa, dan [Otorisasi] berfungsi dengan baik di semua metode lainnya.
Seluruh URL dalam hal ini panjangnya 966 karakter, setelah penelitian tampaknya nilai maxQueryStringLength adalah 2048 secara default tetapi dapat diganti ke nilai jenis integer apa pun, jadi hanya untuk senyum saya menambahkan
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
kunci ke file konfigurasi web di bawah kunci.
Tidak ada kegembiraan di sana, jadi saya menjadi konyol dan berhasil mencapai 4096, tetap tidak ada kegembiraan.
Sekarang dengan seluruh URL sepanjang 966 karakter, atribut authorize tidak dapat secara serius menambahkan 1082-3130 karakter lainnya, jadi bagaimana saya dapat menentukan apa kesalahan sebenarnya, atau mengapa pengaturan tidak berlaku.
VS2010 Pro SP1
sumber
Jawaban:
Saat permintaan tidak sah masuk, seluruh permintaan dienkode URL, dan ditambahkan sebagai string kueri ke permintaan ke formulir otorisasi, jadi saya dapat melihat di mana hal ini dapat mengakibatkan masalah mengingat situasi Anda.
Menurut MSDN, elemen yang benar untuk dimodifikasi untuk mereset maxQueryStringLength di web.config adalah
<httpRuntime>
elemen di dalam<system.web>
elemen, lihat httpRuntime Element (ASP.NET Settings Schema) . Coba ubah elemen itu.sumber
Di root
web.config
untuk proyek Anda, di bawahsystem.web
node:Selain itu, saya harus menambahkan ini di bawah
system.webServer
node atau saya mendapat kesalahan keamanan untuk string kueri panjang saya:sumber
maxQueryString
panjang dalam byte sebagai uint dengan nilai maks 4294967295 danmaxQueryStringLength
panjang dalam karakter sebagai int tetapi dengan kisaran 0-2097151.Bagi orang lain yang mungkin mengalami masalah ini dan tidak diselesaikan dengan salah satu opsi di atas, inilah yang berhasil untuk saya.
Saya telah menonaktifkan ini karena kami menggunakan Auth kami sendiri, tetapi itu mengarah ke masalah yang sama dan jawaban yang diterima tidak membantu sama sekali.
sumber
saya mengalami kesalahan ini menggunakan datatables.net
saya memperbaiki mengubah ajax default Dapatkan ke POST di properti te dari DataTable ()
sumber