1

У меня есть следующий код на моем сайте: многоязычный (MasterPage.master.vb)VB.NET Перенаправление петля ошибка

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 

Он будет отображать querystrings:? '? Language = ES' или»Language = en 'в конце текущего URL-адреса, но когда я запускаю веб-браузер, браузер отображает сообщение: Эта страница имеет цикл переадресации (ERR_TOO_MANY_REDIRECTS).

Почему это происходит? Как я могу это исправить?

Заранее спасибо

Edit: Я также попытался с:

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 

ответ

3

Вы всегда перенаправляете при загрузке первой страницы. См:

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 
+0

Когда я удалить «Not» строки запроса не появляется в конце URL. – user3375954

+0

Хорошо, спасибо за ваш ответ, я попробую. – user3375954

+0

См. Обновленный ответ. – zed

Смежные вопросы