Click here to Skip to main content
15,920,896 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi all!

My Global.aspx file contains this code:
C#
void Application_BeginRequest(object sender, EventArgs e)
{
    string path = HttpContext.Current.Request.Url.PathAndQuery;
    string pagequery = path.Substring(path.LastIndexOf("/") +1);
    string[] pagequery_Elements = pagequery.Split('?');
    string ReturnUrl = pagequery_Elements[pagequery_Elements.Length - 1];
    //Admin's folder is named "Admin"
   // if (ReturnUrl.Contains("ReturnUrl") && ReturnUrl.Contains("admin") && !path.Contains("admin/Login.aspx"))

    if (ReturnUrl.Contains("ReturnUrl"))
    {
        Response.Redirect("~/login.aspx", true);
    }

}

When I click the "Forget Password" link, it does not redirect to the ~/RecoveryPassword.aspx page but rather redirects to ~/login.aspx.

What's the problem in the above file?
Posted
Updated 2-Mar-11 20:01pm
v2
Comments
Manfred Rudolf Bihy 3-Mar-11 2:09am    
Edit: Added pre code tags, minor spelling.

If the link "Forget Password" contains a parameter called ReturnUrl the behaviour is understandable. The method Application_BeginRequest is called when a client request is initiated towards your application before the Page_Init and Page_Load of your aspx page gets called. In your above method the url is taken apart into schema/host/path and querystring components. The if statement just checks if the querystring contains the string "ReturnUrl" and then redirects to the ~/login.aspx.

C#
void Application_BeginRequest(object sender, EventArgs e)
{
    string path = HttpContext.Current.Request.Url.PathAndQuery;
    string pagequery = path.Substring(path.LastIndexOf("/") +1);
    string[] pagequery_Elements = pagequery.Split('?');
    string ReturnUrl = pagequery_Elements[0];     //Contains schema/host/path
    string QueryString = pagequery_Elements[1];   //Contains querystring part
    //Admin's folder is named "Admin"
   // if (ReturnUrl.Contains("ReturnUrl") && ReturnUrl.Contains("admin") && !path.Contains("admin/Login.aspx"))

    if (QueryString.Contains("ReturnUrl") && !ReturnUrl.ToUpper().Contains("RECOVERYASSWORD.ASPX"))
    {
        Response.Redirect("~/login.aspx", true);
    }

}



Hope that clears it up for you.

Cheers!
 
Share this answer
 
v2
Comments
Sandeep Mewara 3-Mar-11 4:09am    
Good answer. 5!
change this as

void Application_BeginRequest(object sender, EventArgs e)
    {
        string path = HttpContext.Current.Request.Url.PathAndQuery;
        string pagequery = path.Substring(path.LastIndexOf("/") +1);
        string[] pagequery_Elements = pagequery.Split('?');
        string ReturnUrl = pagequery_Elements[pagequery_Elements.Length - 1];
        //Admin's folder is named "Admin"
       // if (ReturnUrl.Contains("ReturnUrl") && ReturnUrl.Contains("admin") && !path.Contains("admin/Login.aspx"))

        if (ReturnUrl.Contains("ReturnUrl") && !path.ToUpper().Contains("RECOVERYPASSWORD.ASPX"))
        {
            Response.Redirect("~/login.aspx", true);
        }

    }


--Pankaj
 
Share this answer
 
v3
Comments
Manfred Rudolf Bihy 3-Mar-11 2:39am    
"Contailns" changed to "Contains". FTFY
Your code has a problem in that ReturnUrl does not contain the schema/host/path part but only the querystring part. See my answer.
pankajupadhyay29 3-Mar-11 2:41am    
Thanks
Manfred Rudolf Bihy 3-Mar-11 2:42am    
Your welcome!

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900