ASP.Net Application_BeginRequest&该页面未正确重定向

时间:2014-07-30 13:56:49

标签: asp.net webforms

我有一个国家/地区选择页面,其中用户选择国家/地区,并且在用户PC中删除了Cookie,因此下一个用户将根据Cookie值重定向到页面。所以我从Application_BeginRequest检查用户电脑中存在的cookie,如果没有找到,则将用户重定向到country.aspx页面

我调试代码并看到一个无限循环的星。这样我就可以编码所有的东西

protected void Application_BeginRequest(Object sender, EventArgs e)
{
string sVal = BBAreman.CountryCookie.GetCookieValue();
            string xx = Request.Url.ToString();
            if (sVal.Trim() == "")
            {
                //Server.Transfer("~/index.aspx?ShowCountry=true",true);
                HttpApplication application = (HttpApplication)sender;
                HttpContext context = application.Context;
                Response.RedirectPermanent("~/country.aspx?ShowCountry=true", true);
                //context.Response.End();
            }
}

我有问题而且无法思考我怎么能解决这个问题但是我看过server.transfer工作但我看到当我使用server.transfer然后js相关错误显示在FF浏览器中,只是无法理解为什么js相关的错误来自因为当我手动重新加载该页面时,没有出现与js相关的错误。

所以请指导我如何解决这个问题。还告诉我是否有可能从外面挂钩aspx页面加载方法?

感谢

1 个答案:

答案 0 :(得分:0)

Application_BeginRequest不是运行上面代码的最佳位置。 Application_BeginRequest是每次新页面请求开始时调用的应用程序事件。 通过调用Response.Redirect ...您可以创建新的页面请求,这意味着事件会一次又一次地触发,这就是您无限循环的原因。

与Server.Transfer不同,因为此方法终止服务器端的当前请求并返回新页面(您转移到的页面)的响应,因此不会创建新请求。你得到js错误的原因必须与你的页面实现方式有关。

如果您想根据上次用户访问过您网站时所做的选择将用户重定向到特定页面,请将您的代码移至同一类中的Session_Start事件(Global.asax)。