C#中的Global.aspx文件处理 [英] Global.aspx file handling in C#

查看:140
本文介绍了C#中的Global.aspx文件处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!

我的Global.aspx文件包含以下代码:

Hi all!

My Global.aspx file contains this code:

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);
    }

}


当我单击忘记密码"链接时,它不会重定向到〜/RecoveryPassword.aspx页面,而是重定向到〜/login.aspx.

上面的文件中的问题是什么?


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?

推荐答案

如果链接忘记密码"包含名为ReturnUrl的参数,则此行为是可以理解的.当向您的应用程序发起客户端请求时,将在 aspx页面的Page_Init和Page_Load被调用之前,调用Application_BeginRequest方法.在上述方法中,URL被分解为模式/主机/路径和查询字符串组件. if语句仅检查查询字符串是否包含字符串"ReturnUrl",然后重定向到〜/login.aspx.

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.

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!


将其更改为

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



--Pankaj


这篇关于C#中的Global.aspx文件处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆