وفجأة اكتشفت أن ASP.NET 2.0 يوفر دعمًا طبيعيًا لـ UrlMapping - قسم <urlMappings> في ملف web.config، وأعربت عن أسفي لأن كتابة البرامج ليست في الواقع مهمة فنية في أيامنا هذه.
<?xml version="1.0"?>
<التكوين>
<system.web>
<urlMappings>
<add url="~/2006/07" MappedUrl="~/Month.aspx?year=2006&month=01"/>
<add url="~/2006/08" MappedUrl="~/Month.aspx?year=2006&month=02"/>
</urlMappings>
<تصحيح الأخطاء = "صحيح"/>
</system.web>
</التكوين>
يسمح هذا التكوين لبرنامج ASP.NET بدعم UrlMapping مباشرة في خادم تطوير ASP.NET (أي تحديد نظام الملفات عند إنشاء مشروع ASP.NET)، ولكن به العديد من أوجه القصور:
1. يمكن تعيين العناوين الثابتة فقط، لذلك يمكن تكوين عنوان واحد فقط.
2. ليست هناك حاجة لتكوين أي شيء آخر في ASP.NET Development Server نظرًا لنموذج استجابة الطلب في IIS، فمن المقدر أن يتم إعداد التعيين في IIS. في هذه الحالة، كنت أبحث عن معلومات في كل مكان لمعرفة كيفية إعداد التعيين في ASP.NET Development Server، ولكن النتيجة كانت عدم نجاح الأمر.
نظرًا لعيب UrlMapping في أنه لا يدعم التعبيرات العادية، فقد قمت بإنشاء UrlMapping يدعم التعبيرات العادية. لسوء الحظ، نظرًا لأن UrlMapping يتم استدعاؤه بواسطة HttpApplication، وHttpApplication داخلي، فلا يمكنه فعل أي شيء به، وبالتالي فإن التنفيذ غير موثوق. بالمقارنة مع UrlMapping،
قم بتنزيل ملف <Section> إضافي في Web.config (يتضمن الملف الذي تم تنزيله مكون RegexUrlMapping ونموذج ASP.NET. لاحظ أن برنامج ASP.NET يحتاج إلى النشر في IIS ويجب تعيين التعيين. الطريقة هي النقر بزر الماوس الأيمن فوق الدليل الظاهري، وحدد خصائص، وحدد التكوين، وأضف مرجعًا إلى c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll في تعيين تطبيق أحرف البدل، وقم بإزالة الارتباط إلى . للتأكد من وجود الملف، هنا لكي أكون كسولًا، أستخدم أحرف البدل لتعيين كل شيء إلى ISAPI الخاص بـ ASP.NET 2.0. في التطوير الفعلي، من الأفضل إضافة تعيينات أكثر تحديدًا حسب الاقتضاء)
أمثلة التكوين في Web.config هي على النحو التالي:
<?xml version="1.0"?>
<التكوين>
<أقسام التكوين>
<section name="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configSections>
<RegexUrlMappings ممكّن = "true" rebaseClientPath = "true">
<add url="(d+)$" MappedUrl="default.aspx?id=$1"/>
<add url="(?<=/)(?<id>[az]+)$" MappedUrl="default.aspx?id=${id}" />
<add url="/$" MappedUrl="/default.aspx?id=0"/>
</RegexUrlMappings>
<system.web>
<httpModules>
<add name="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpModules>
<تصحيح الأخطاء = "صحيح"/>
<وضع المصادقة = "Windows"/>
</system.web>
</configuration>
يتم استخدام السمة الممكّنة لـ RegexUrlMapping لفتح وإغلاق التعيين بالنسبة إلى rebaseClientPath، يرجى الرجوع إلى معلمة rebaseClientPath في HttpContext.RewritePath.
يتم استخدام <add> لإضافة قواعد التعيين، وurl هو نمط التعبير العادي الذي يطابق المسار، وmappedUrl هي قاعدة الاستبدال للاستخدام، راجع طريقة Regex.Replace في المثال أعلاه، تحدد الإضافة الأولى المجموعة 1 بين قوسين في عنوان URL، لذلك في المرجع لاحقًا $1
تستخدم الإضافة الثانية (؟<id>) في عنوان URL لتحديد معرف المجموعة، ثم تستخدم ${id} للإشارة إلى المجموعة. أما الإضافة الثالثة فهي استبدال السلسلة الثابتة. ويبدو أن التعبيرات العادية لا تزال مهمة جدًا ~~
http //www.cnblogs.com/thinhunan/archive/2006/08/22/regexurlmapping.html