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