apa yang routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Saya tidak dapat menemukan file .axd dalam proyek saya, dapatkah saya menghapus aturan rute ini?
apa yang routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Saya tidak dapat menemukan file .axd dalam proyek saya, dapatkah saya menghapus aturan rute ini?
File .axd tidak ada secara fisik. ASP.NET menggunakan URL dengan ekstensi .axd (ScriptResource.axd dan WebResource.axd) secara internal, dan ditangani oleh HttpHandler.
Oleh karena itu, Anda harus mempertahankan aturan ini, untuk mencegah ASP.NET MVC mencoba menangani permintaan alih-alih membiarkan HttpHandler khusus melakukannya.
IgnoreRoute
konfigurasi perutean MVC adalah untuk memastikan bahwa MVC tidak mencoba menangani permintaan tersebut. Ini karena.axd
titik akhir perlu ditangani oleh penangan HTTP lain (penangan yang bukan bagian dari MVC) untuk menyajikan skrip.Beberapa Latar Belakang
Jika Anda membuka file ini:
Anda akan menemukan ini di dalam file:
Itu pada dasarnya memberitahu runtime Asp.NET: "Hai asp.net bung, jika permintaan datang untuk WebResource.axd kemudian gunakan AssemblyResourceLoader untuk memproses permintaan."
Harap dicatat bahwa WebResource.axd BUKAN sebuah file tetapi hanya sebuah peta (jika boleh saya katakan)
AssemblyResourceLoader
. Ini adalah nama di mana pawang terdaftar. Di mesin saya, saya menemukan penangan .axd berikut:Oke, jadi apa yang dilakukan pawang itu?
Mereka
AssemblyResourceLoader
tahu bagaimana mencari file yang disematkan dalam sebuah assembly sehingga dapat menyajikannya (mengirimkannya ke klien yaitu browser). Misalnya, dalam formulir web asp.net, jika Anda menggunakan kontrol validasi, mereka bergantung pada beberapa javascript untuk menampilkan kesalahan pada halaman web. Namun, javascript itu tertanam dalam sebuah assembly. Browser membutuhkan javascript sehingga Anda akan melihat ini di html halaman:Ini
AssemblyResourceLoader
akan menemukan perakitan di mana javascript disematkan menggunakan informasi di querystring dan mengembalikan javascript.Kembali ke Pertanyaan
Jadi untuk menjawab pertanyaan itu, apa itu:
Itu memberi tahu mesin perutean bahwa kami tidak akan memproses permintaan yang cocok dengan pola rute itu. Dengan kata lain, kami tidak akan memproses
.axd
permintaan. Mengapa? Karena MVC itu sendiri adalah HttpHandler yang mirip dengan.axd
dan.aspx
dan banyak penangan lain yang ada di file web.config. Penangan MVC tidak tahu bagaimana memproses permintaan seperti mencari sumber daya yang disematkan dalam rakitan-theAssemblyResourceLoader
tahu bagaimana melakukannya. MVC tahu bagaimana melakukannya, baik semua yang dilakukannya yang berada di luar cakupan pertanyaan dan jawaban ini.sumber
Rute dengan pola {resource} .axd / {* pathInfo} disertakan untuk mencegah permintaan file resource Web seperti WebResource.axd atau ScriptResource.axd diteruskan ke pengontrol.
Tautan baca: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
sumber
Lihatlah tautan di bawah ini: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
sumber
Itu bukan file (tidak ada di disk) - mereka hanya nama yang terdaftar di beberapa penangan HTTP.
sumber