6 Ocak 2015 Salı

ASP.Net 3.5 URL Yönlendirme (IIS7)

Yönlendirme Nedir?

Microsoft .NET Framework 3.5 Service Pack 1 ASP.NET çalışma zamanı bir yönlendirme motoru tanıttı.yönlendirme motoru Web uygulamaları için dostu URL'ler oluşturmak için izin, isteğine yanıt fiziksel Web Form gelen bir HTTP isteği URL'yi ayrıştırarak yapabilirsiniz.
Eğer CSharp.aspx adında bir ASP.NET Web Form olduğunu varsayalım, ve bu formu 'Eğitimi' adlı bir klasör içinde olduğunu. Bu Web formu ile bir öğretici görüntüleme klasik yaklaşım yazar görüntülemek için Web Form anlatmak için sorgu dizesi bazı verileri formun fiziksel konumu işaret eden bir URL oluşturursak ve  5 numası yazarların tam bir veritabanı tablosundaki birincil anahtarıdır. değeri örneğin /Tutorial/CSharp.aspx?AuthorID=5: Böyle bir URL sonuna aşağıdaki gibi görünebilir.
/Tutorial/CSharp/5

Yönlendirme için ASP.NET yapılandırma

Yönlendirme için bir ASP.NET Web sitesini veya Web uygulamasını yapılandırmak için, öncelikle System.Web.Routing derlemesine eklemeniz gerekir. .NET Framework 3.5 için SP1 yükleme genel birleştirme önbelleğine bu derleme kuracak, ve  "Add Reference" iletişim kutusunun içinde derleme örneğini bulabilirsiniz.
IIS 7.0 yönlendirme içeren bir Web sitesi çalıştırmak için, web.config iki girişleri gerekir. İlk giriş <modules> bulunan URL yönlendirme modülü yapılandırması, bölümüdür. Ayrıca bir içinde UrlRouting.axd için istekleri işlemek için giriş bölümüne gerekir.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">              
                             
<add name="UrlRoutingModuletype="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

   

</modules>

<handlers>             
<add name="UrlRoutingHandlerpreCondition="integratedModeverb="*"path="UrlRouting.axdtype="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

   


</handlers>
</system.webServer>
Eğer IIS modülü yönlendirme URL'yi yapılandırılmamışsa , PostResolveRequestCache ve PostMapRequestHandler olaylara kendinimiz bağlayacağız.

Rotalar yapılandırma

Şimdi rotayı yapılandırmak için, ilk şey uygulaması başlangıçta rota kayıt etmeli. Uygulama başlangıçta yolları bulması için Global.asax dosyasında aşağıdaki kodu yazmalıyız.
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
RouteTable.Routes.Add("Tutorial",new("Tutorial/{subject}/{AuthorID}"newRouteHandler(string.Format("~/CSharp.aspx"))));
}
İşte {subject}, {AuthorID} ile biz sorgu dizesine ulaşacağız.
Şimdi, biz ihtiyacımız RouteHandler.
public class RouteHandler : IRouteHandler
{
    string _virtualPath;
    public RouteHandler(string virtualPath)
    {
         _virtualPath = virtualPath;
    }
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {       
        foreach (var value in requestContext.RouteData.Values)
        {
            requestContext.HttpContext.Items[value.Key] = value.Value;
        }
        return (Page)BuildManager.CreateInstanceFromVirtualPath(_virtualPath,typeof(Page));
    }
}
Şimdi, Yönlendirme sorgu dizesi hakkında yapılandırılmış ama ne olduğunu bilmiyoruz.Sorgu dizelerini almak için biz context.Items ["ID"] yerine Request.QueryString ["ID"] kullanıyoruz.
HttpContext context = HttpContext.Current;
String id = context.Items["AuthorID"].ToString();

Hiç yorum yok:

Yorum Gönder