مسيرگزيني URL قابليتي بود كه در ابتدا توسط
برخي از شركتها به صورت كامپوننتي جداگانه براي ASP.NET تهيه شد.
مايكروسافت براي اولين بار اين قابليت را از نسخه ASP.NET 3.5 SP1 معرفي
كرد كه قبل از آن در برنامه هاي ASP.NET
MVC براي برخورداري از URL هاي كوتاه، تميز با قابليت گير افتادن سريعتر در
موتورهاي جستجوگر و همسان با استانداردهاي Web 2.0 مورد استفاده قرار مي
گرفت. مسيرگزيني URL اين امكان را مي دهد تا در آدرس URL مسيرها را بدون
نگاشت فايلهاي فيزيكي تعريف كرد. اين امر كمك مي كند تا بجاي آنكه مجبور
شويم نام اصلي يك فايل يا شماره كد يا يك ID طولاني را در آدرس URL
بياوريم، از عباراتي معني دار استفاده كنيم كه هم كاربرپسند است هم سريع تر
مورد توجه موتورهاي جستجوگر قرار مي گيرد.
بعنوان مثال آدرس زير را در نظر بگيريد كه يك
صفحه كه يك گروه خاص از محصولات را نشان مي دهد:
http://www.mysite.com/products.aspx?category=software
با استفاده از مسيرگزيني URL در ASP.NET 4.0 مي
توان برنامه را طوري پيكربندي نمود كه به جاي URL فوق URL زير را بپذيرد.
http://www.mysite.com/products/software
به كمك ASP.NET 4.0 آدرسهايي شبيه فوق اكنون مي
توانند براحتي هم در كلاسهاي ASP.NET MVC Controller و هم در صفحات مبتني
بر ASP.NET Web Forms نگاشته شوند.
مسيرگزيني URL ها به كمك ASP.NET MVC
قابليت مسيرگزيني URL كه در ASP.NET MVC معرفي
شد، روشي كارا براي كنترل URL هاي وارده پديد آورده است. به طور نمونه
كافيست شما كدي را در قسمت startup برنامه جهت نگاشت URL ها به فرمت خاصي
از URL مورد نظر بنويسيد.
شكل زير نشان مي دهد كه چگونه مي توان با
استفاده از ASP.NET MVC آدرس /products/software را به كلاس كنترلر
Products كه يك تابع action به نام Browse دارد شناساند.

اولين پارامتر از متد ()MapRout نام خلاصه شده
مسير مي باشد. پارامتر دوم فيلتر URL مي باشد اين پارامتر به متد ()Browse
از كلاس ProductsController پاس داده خواهد شد تا در آنجا مورد پردازش قرار
گيرد.
نگاشت URL ها با استفاده از ASP.NET Web Forms
ASP.NET 4.0 اين امكان را فراهم آورده است تا
بتوان همانند كنترلرهاي ASP.NET MVC به نگاشت URL ها در ASP.NET Web Forms
پرداخت.
مثال زير نشان مي دهد كه چگونه مي توان با
استفاده از تايع جديد ()MapPageRoute در ASP.NET 4.0 آدرس
products/software را به صفحه Products.aspx كه در دايركتوري اصلي قرار
دارد منتقل كرد.

دو پارامتر اول اين تابع همانند تابع ()MapRoute مي باشد و پارامتر سوم به
صفحه اي اشاره مي كند كه قرار است URL را كنترل كند. در صفحه Products.aspx
مي توان كدهايي همانند شكل زير نوشت كه با استفاده از خاصيت جديد
Page.RouteData در ASP.NET 4.0 مقدار پارامتر category را كه توسط
products/category نگاشته شده است را برگردانده و از آن استفاده كرد.

علاوه بر دسترسي برنامه نويسي شده به پارامترهاي
URL همانند شكل فوق، مي توان از <asp:routeparameter> در هر كنترل
DataSource در ASP.NET براي دسترسي به پارامتر URL استفاده كرد. به عنوان
مثال در زير عبارت <asp:routeparameter> براي برگرداندن مقدار پارامتر
@category از products/{category} در مسير URL بكار رفته است.

برگرداندن URL ها در ASP.NET Web Form
همانطور كه در ASP.NET به كمك مسيرگزيني URL، مسيرهاي دلخواه به عنوان مسير
اصلي انتخاب مي شوند مي توان براحتي مسيرهاي واقعي را نيز برگرداند. بعنوان
مثال در فوق وقتي URL مروط به products/{category} را نگاشتيم در واقع به
آن يك نام كاربرپسند مثلا" به نام "products-browse" نسبت داديم. حال مي
توان به راحتي با استفاده از متد ()Page.GetRouteUrl و با استفاده از
پارامترهاي آن مسير واقعي URL را برگرداند. مثال زير نحوه استفاده از اين
متد براي برگرداندن مسير اصلي URL كه با نام كاربر پسند مثلا"
"products-browse" نگاشته شده است را نشان مي دهد.

به تابع توضيح داده شده در فوق مي توان هم از
طريق كد نويسي در code-behind و هم از طريق markup نويسي در صفحه aspx دست
يافت.
همچين مي توان با استفاده از متد ()Response.RedirectToRoute
بدون توجه به اينكه از MVC استفاده مي كنيم يا Web Form كاربران را به
مسيرهاي مختلفي كه با استفاده از مسيرگزيني URL نگاشته شده اند، منتقل كرد.
سناريوهايي براي اداره كردن PostBack ها
مسيرگزيني URL در ASP.NET 4.0 به طور كامل
سناريوهاي Postback را پشتيباني مي كند. بعنوان مثال اگر صفحه اي با آدرس
products/software را باز كنيد همه كنترل هاي سمت سروري آن المان html
بصورت <form action="/products/software"> را به client برميگردانند. كه
اين يعني حفظ كردن URL ها در هر Postback ،چيزي قبلا" برنامه نويسان با
استفاده از مادولهاي URL Rewriting براي فراهم ساختن آن نياز به كدنويسي
اضافه داشتند.