Saturday, September 10, 2011

URL REWRITING/VIRTUAL URL


Let us assume that ,we need to display the user public profile information in viewprofile.aspx page

Generally we pass the user id in the qurey string like ”viewprofile.aspx?id=100” . We fetch data using id value and displays the information .

If client request s you to url format to be like http://yoursite.com/ publicprofile /username

For that type of cases we use the url rewriting concepts .

Introduction

In this article we will learn url rewriting ,virtual url   concepts
URL rewriting is the process of accepting an incoming Web request and automatically redirecting it to a different URL.


Using the code

Create  publicprofile” directory  in your web application.
Global.asax
void Application_BeginRequest(object sender, EventArgs e)
{
string CurrentPath = Request.Url.ToString();
            if (CurrentPath.Contains("/publicprofile/"))
            {
                HttpContext MyContext = HttpContext.Current;
                string url = CurrentPath.Substring(0,CurrentPath.LastIndexOf("/"));
                string username = CurrentPath.Substring(CurrentPath.LastIndexOf("/"));
                username = username.Replace("/""");
                if (CurrentPath[CurrentPath.Length - 1].ToString() == "/")
                {
                    HttpContext.Current.Response.Status = "301 Moved Permanently";
                    HttpContext.Current.Response.AddHeader("Location",
                    Request.Url.ToString().Replace(CurrentPath, url));
                }
                else
                {         
                   MyContext.RewritePath("index.aspx?uname=" + username);                  
                }
            }
}
Place “Index.aspx” in “publicprofile” directory.
Index.aspx.cs
protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["uname"] != "")
        {
  int id = Validateuser.getId(Request.QueryString["uname"].ToString());
            if (id != 0)
            {
                ProfileInfo(id);
            }
            else
            {
                Response.Redirect(“http://yoursite.com/?err=1");
            }
        }
        else
        {
           Response.Redirect(“http://yoursite.com/?err=1");
        }

    }
protected void ProfileInfo(int proID){
DataTable dt = Validateuser.getprofile(proID);
//Code to assign values to controls……
}


Web.config:
<httpModules>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>

No comments :

Post a Comment