Untuk setiap URL dengan tanda tambah (+) di URL dasar (bukan querystring), IIS7 dan IIS7.5 (Windows Server 2008 dan 2008 R2) tampaknya tidak meneruskan URL ke penangan default pada aplikasi ASP.NET aplikasi . Saya mulai memperhatikan masalah dengan handler HTTP khusus aktif *.html
tetapi saya memiliki masalah yang sama dengannya *.aspx
. IIS6 (Server 2003) tidak memiliki masalah dengan URL yang sama ini.
Untuk mereplikasi masalah ini, di situs ASP.NET, saya membuat satu set file ASPX yang melakukan Response.Write sederhana dengan berbagai nama:
- test_something.aspx
- test_some + thing.aspx
- test_some thing.aspx
File ketiga adalah tes untuk melihat apakah IIS7 [.5] memperlakukan simbol plus sebagai spasi (seperti dalam querystring); sepertinya ini bukan masalahnya. Dengan semua file ini di tempat, memukul http://somehost/test_some+thing.aspx
atau http://somehost/test_some%2bthing.aspx
akan berfungsi dengan baik di IIS6 tetapi 404 di IIS7 / IIS7.5 sebelum sampai ke penangan ASP.NET. Apakah ada konfigurasi di IIS7 / 7.5 yang saya lewatkan untuk membuatnya "melihat" tanda tambah di URL tanpa melewatkan ekstensi akhir yang digunakan untuk menentukan HTTP handler?
\+
?Jawaban:
Setelah mencari lebih banyak kombinasi IIS dan plus, tampaknya IIS7 [.5] diatur untuk menolak URL dengan tanda tambah secara default karena takut penggunaan karakter itu; simbol itu masih diperbolehkan dalam querystring. The solusi adalah untuk mengubah default atribut requestFiltering pada
<system><webServer><security><requestFiltering>
untuk memungkinkan karakter ganda-dikodekan dengan panggilan baris perintah (akhirnya memodifikasi Anda ASP.NET web.config):Ini mungkin sedikit lebih berbahaya daripada yang lebih suka dengan situs web mereka, tetapi tampaknya tidak ada cara untuk lebih spesifik daripada selimut yang diizinkan. Peringatan terkait ketidaksesuaian yang bisa terjadi antara menggunakan nilai tambah di URL dan terjemahannya sebagai spasi. Sepertinya satu-satunya alternatif lain adalah berhenti menggunakan karakter plus di URL Anda sama sekali.
sumber
Saya baru tahu cara membuat aturan penulisan ulang untuk meyakinkan IIS7 untuk memetakan plus untuk spasi di URL. Dalam kasus saya ini adalah untuk menjaga bookmark lama atau hyperlink berfungsi.
Lihat posting blog saya untuk rincian dan referensi lebih lanjut.
sumber