【问题标题】:.NET Response.Redirect not working properly on new server.NET Response.Redirect 在新服务器上无法正常工作
【发布时间】:2011-02-27 10:26:16
【问题描述】:

我们的 ASP 服务器遇到了问题。

如果您尝试访问受密码保护的页面,它会进行安全检查并在您未登录时重定向您,保留 URL(即 Members/MemberLogin.aspx?doc=/PodCast/Default.aspx)

vb 脚本将“/PodCast/Default.aspx”放在一个变量中,并一直保存到登录过程完成。

一旦用户输入他们的用户名和密码,它应该执行 Response.Redirect(strRedirectURL) 并转到“/PodCast/Default.aspx”,但它会转到 default.aspx 页面以成功登录.

关键是,我知道代码是 100% 正确的,因为它在我们以前的服务器上运行,但是当我们将所有数据推送到这台服务器上时,一切正常,但那一块。

任何建议,都会很棒!

谢谢大家!

【问题讨论】:

    标签: asp.net vb.net windows-server-2003 response.redirect


    【解决方案1】:

    您是否使用自定义重定向代码? ASP.NET 用于登录后重定向的默认查询字符串参数是ReturnUrl

    您给出了示例:Member/MemberLogin.aspx?doc=/PodCast/Default.aspx。

    基于此,我假设一旦登录,.net 框架会检查 Request.QueryString["ReturnUrl"] 的值并发现它为空,因此网站重定向到基本 url。

    如果由于某种原因您正在使用doc 作为查询字符串参数构造一个非标准 url,您可以挂钩到您的Login 控件的 OnLogin 事件,例如:

    标记:

    <asp:Login id="Login1" runat="server" OnLoggedIn="Login1_LoggedIn" />
    

    代码:

    protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        string url = Request.QueryString["doc"];
        if(!string.IsNullOrEmpty(url))
        {
            Response.Redirect(url);
        }
    }
    

    【讨论】:

    • 首先,如果我听起来很无知,我并不是一个 .net 的家伙,所以对我如此赤裸裸。写这一切的人不再在这里,代码似乎到处都有错误,而且有不常见的做法。话虽如此,登录页面会在页面加载后检测上一个页面,并将其放置在字符串变量中。输入用户名和密码后,它似乎会重新加载并释放变量信息,并默认为 else 变量声明的内容。那有意义吗?大声笑感谢您的帮助!
    • 这是我上面提到的 if 语句 If Len(strRequestedDoc) > 0 Then strRedirectURL = strRequestedDoc Else strRedirectURL = "/Members" End If
    • 您可以为登录页面发布您的代码隐藏吗?由于您使用的是自定义功能,因此如果没有它,将很难提供帮助。我认为源代码是关键。
    【解决方案2】:

    如果您的回发机制(如按钮)存在于更新面板中,则需要设置触发器 asp:PostBackTrigger ControlID="XXXX" /

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 2012-08-02
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2019-08-04
    相关资源
    最近更新 更多