Saya punya masalah kode warisan yang mengharuskan saya mendukung url acak seolah-olah itu adalah permintaan untuk beranda. Beberapa URL memiliki karakter di dalamnya yang menghasilkan kesalahan "Nilai Request.Path yang berpotensi berbahaya terdeteksi dari klien (&)" . Situs ini ditulis dengan ASP.Net MVC 3 (dalam C #) dan berjalan di IIS 7.5.
Berikut contoh URL ...
http://mywebsite.com/Test123/This_&_That
Inilah cara saya memiliki pengaturan rute penampung semua (saya memiliki rute lain untuk menangkap halaman tertentu) ...
routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);
Saya telah menambahkan hal-hal berikut ke file web.config saya ...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
Saya juga telah menambahkan atribut ValidateInput ke tindakan yang seharusnya menangkap url ...
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
Tapi saya masih mendapatkan kesalahannya. Ada ide mengapa? Apakah saya melewatkan sesuatu? Saat ini saya hanya menjalankan server dev lokal saya (saya belum mencoba perbaikan ini dalam produksi).
sumber
Jawaban:
Meskipun Anda dapat mencoba pengaturan ini di file konfigurasi
Saya akan menghindari penggunaan karakter seperti '&' di jalur URL menggantinya dengan garis bawah.
sumber
Saya telah menghadapi jenis kesalahan ini. untuk memanggil fungsi dari pisau cukur.
selesaikan itu dengan mengubah garis
dari
untuk
di mana route.config saya berada
sumber
Jika Anda ingin mengizinkan tag HTML hanya untuk beberapa kotak teks di mvc
Anda bisa melakukan satu hal
dalam pengontrol
sumber
Kami mendapatkan kesalahan yang sama di Fiddler saat mencoba mencari tahu mengapa penampil peta ArcGIS Silverlight kami tidak memuat peta. Dalam kasus kami, itu adalah kesalahan ketik pada URL di kode. Ada tanda yang sama di sana karena suatu alasan.
http: = // someurltosome / awesome / place
bukannya
http: // someurltosome / awesome / place
Setelah menghilangkan tanda yang sama itu berhasil dengan baik (tentu saja).
sumber
Periksa baris di bawah ini ada di file web.config Anda
<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>
sumber