#asp.net #vb.net
#asp.net #vb.net
Вопрос:
Я загружаю asp.net страница в браузере, и я испытываю проблемы с состоянием сеанса.
По-моему Page_Init
, я делаю это:
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If validPlayer() Then
FillSession()
'try to refresh the page
Server.TransferRequest(Request.Url.AbsolutePath, False)
End If
If Session("playerID") = 194483 Then
Response.Redirect("~/launcher/PortalLogin.aspx?err=You do not have permissions to access this game.")
End If
End Sub
Private Sub FillSession()
Session("gameID") = Request.QueryString("gameID").ToString
Session("playerID") = Request.QueryString("playerID").ToString
End Sub
Я использую тестовый проигрыватель при разработке.
Поэтому я передаю GameID и PlayerID (194483) через URL.
Проблема в том, что когда он попадает, FillSession
, затем проверяет, является ли Session("playerID") = 194483
при отладке сеанс пустым, и я получаю You do not have permissions to access this game.
сообщение.
Похоже, у него еще не было времени заполнить сеанс.
Однако, если я обновлю страницу, она будет работать нормально.
Поэтому я попытался добавить эту строку после вызова FillSession()
для обновления страницы:
Server.TransferRequest(Request.Url.AbsolutePath, False)
Но это просто приводит к тому, что браузер оказывается в бесконечном цикле.
Есть ли способ заставить страницу обновляться автоматически, чтобы значения сеанса были там?
Спасибо!
Комментарии:
1. как заполняется validplayer?
2. @Jeremy oops Прямо сейчас он просто возвращается
true
, несмотря ни на что, из-за моего тестирования.3. так что это хорошее место для начала устранения неполадок! где код, который устанавливает эту переменную?
4. Лучше использовать событие загрузки страницы — проверьте, является ли IsPostBack = False для первого запущенного кода.