VB.NET 重定向循环错误

VB.NET redirection loop error

我的多语言网站上有以下代码:(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

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

    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