Tiba-tiba saya menemukan bahwa ASP.NET 2.0 sendiri memberikan dukungan alami untuk UrlMapping - bagian <urlMappings> di file web.config. Saya menyesalkan bahwa menulis program bukanlah pekerjaan teknis saat ini.
<?xml versi="1.0"?>
<konfigurasi>
<sistem.web>
<urlPemetaan>
<tambahkan url="~/2006/07" mappedUrl="~/Month.aspx?year=2006&month=01"/>
<tambahkan url="~/2006/08" mappedUrl="~/Month.aspx?year=2006&month=02"/>
</urlMappings>
<kompilasi debug="benar"/>
</sistem.web>
</konfigurasi>
Konfigurasi ini memungkinkan program ASP.NET untuk secara langsung mendukung UrlMapping di Server Pengembangan ASP.NET (yaitu, memilih sistem file saat membangun proyek ASP.NET), namun memiliki beberapa kelemahan:
1. Hanya alamat tetap yang dapat dipetakan, sehingga hanya satu alamat yang dapat dikonfigurasi.
2. Tidak perlu mengkonfigurasi apa pun di Server Pengembangan ASP.NET. Karena model respons permintaan di IIS, diperkirakan pemetaan perlu diatur di IIS. Dalam hal ini saya mencari informasi kemana-mana untuk melihat cara setting pemetaan di ASP.NET Development Server, namun hasilnya tidak berhasil.
Mengingat kekurangan UrlMapping yang tidak mendukung ekspresi reguler, saya membuat UrlMapping yang mendukung ekspresi reguler. Sayangnya, karena UrlMapping dipanggil oleh HttpApplication, dan HttpApplication bersifat Internal, maka tidak dapat berbuat apa-apa dengannya, sehingga implementasinya tidak dapat diandalkan. Dibandingkan dengan UrlMapping,
unduh file <Section> tambahan di Web.config (file yang diunduh menyertakan komponen RegexUrlMapping dan contoh ASP.NET. Perhatikan bahwa program ASP.NET perlu diterapkan di IIS dan pemetaannya harus diatur. Caranya adalah Klik kanan direktori virtual, pilih Properties, pilih Konfigurasi, tambahkan referensi ke c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll di pemetaan aplikasi wildcard, dan lepaskan kait ke. konfirmasi apakah file tersebut ada, ini Malas, saya menggunakan wildcard untuk memetakan semuanya ke ISAPI ASP.NET 2.0. Dalam pengembangan sebenarnya, yang terbaik adalah menambahkan pemetaan yang lebih spesifik sesuai kebutuhan)
Contoh konfigurasi di Web.config adalah sebagai berikut:
<?xml versi="1.0"?>
<konfigurasi>
<configBagian>
<namabagian="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configBagian>
<RegexUrlMappings diaktifkan="benar" rebaseClientPath="benar">
<tambahkan url="(d+)$" mappedUrl="default.aspx?id=$1"/>
<tambahkan url="(?<=/)(?<id>[az]+)$" mappedUrl="default.aspx?id=${id}" />
<tambahkan url="/$" mappedUrl="/default.aspx?id=0"/>
</Pemetaan RegexUrl>
<sistem.web>
<httpModul>
<tambahkan nama="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpModul>
<kompilasi debug="benar"/>
<mode autentikasi="Windows"/>
</sistem.web>
</configuration>
Atribut RegexUrlMapping yang diaktifkan digunakan untuk membuka dan menutup pemetaan. Untuk rebaseClientPath, lihat parameter rebaseClientPath di HttpContext.RewritePath.
<add> digunakan untuk menambahkan aturan pemetaan, url adalah pola ekspresi reguler yang cocok dengan jalur, dan mappedUrl adalah aturan pengganti untuk penggunaan, lihat metode Regex.Replace tanda kurung di url, jadi di Referensi nanti $1
Penambahan kedua menggunakan (?<id>) di URL untuk menentukan id grup, dan kemudian menggunakan ${id} untuk mereferensikan grup. Yang ketiga adalah penggantian string tetap. Tampaknya ekspresi reguler masih sangat penting~~
http ://www.cnblogs.com/thinhunan/archive/2006/08/22/regexurlmapping.html