【问题标题】:VB.NET redirection loop errorVB.NET 重定向循环错误
【发布时间】:2015-07-09 01:54:18
【问题描述】:

我的多语言网站上有以下代码:(MasterPage.master.vb)

Dim pageUrl As String = HttpContext.Current.Request.Url.AbsolutePath

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    Dim strLanguage As String = Session("Language")

    If Not IsPostBack Then

        Response.Redirect(String.Format("{0}?Language={1}", pageUrl, strLanguage))

    End If

    Response.Write(String.Format("{0}?Idioma={1}", pageUrl, strLanguage))
End Sub

它会在当前 URL 的末尾显示查询字符串:'?Language=es' 或 '?Language=en',但是当我运行网络时,浏览器会显示消息:此页面有重定向循环( ERR_TOO_MANY_REDIRECTS)。

为什么会这样?我该如何解决这个问题?

提前致谢

编辑:我也试过:

If IsPostBack Then

但是当我这样做时,查询字符串不会出现在 URL 的末尾。

编辑 2(已解决):终于可以使用了!非常感谢zed,最终代码如下:

     Dim pageUrl As String = HttpContext.Current.Request.Url.AbsolutePath

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    Dim strLanguage As String = Session("Language")

    If Not IsPostBack Then

        If Request.QueryString("Language") Is Nothing Then
            Response.Redirect(String.Format("{0}?Language={1}", pageUrl, strLanguage))
        End If
    Else
        If Not Request.QueryString("Language") Is Nothing Then
            Response.Redirect(String.Format("{0}?Language={1}", pageUrl, strLanguage))
        End If
    End If

    Response.Write(String.Format("{0}?Language={1}", pageUrl, strLanguage))
End Sub

【问题讨论】:

    标签: asp.net redirect webforms infinite-loop response.redirect


    【解决方案1】:

    您总是在第一页加载时重定向。见:

        If Not IsPostBack Then
    
            Response.Redirect(String.Format("{0}?Language={1}", pageUrl, strLanguage))
    
        End If
    

    当您第一次访问任何使用母版页的页面时,您将被一次又一次地重定向(顺便说一句,重定向不是回发)

    根据您需要实现的目标,您可能需要在执行重定向之前进行某种检查,否则它总是会发生。例如,您可以询问 Language 是否不存在于 QueryString 中,然后才进行重定向:

    If Not IsPostBack Then
        If Request.QueryString("Language") Is Nothing Then
            Response.Redirect(String.Format("{0}?Language={1}", pageUrl, strLanguage))
        End If
    End If
    

    【讨论】:

    • 当我删除“不”时,查询字符串不会出现在 URL 的末尾。
    • 非常感谢 Zed,它现在可以工作了!我发布了我使用的最终代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多