2016-12-20 3 views
0

Уважаемого StackOverflow сообщества,страница перенаправляется слишком много раз ASP.NET

я до сих пор новые с ASP.NET и игры играли вокруг, и я обнаружил ошибку аутентификации моего логина, где он показывает ошибку например, «Страница перенаправлена ​​слишком много раз», и происходит что-то, что продолжается, и я не могу понять это через 2 дня.

Я внедрил свой логин, используя header.acsx, поэтому он может быть глобальной аутентификацией на всю страницу.

Вот код head.vb:

If String.IsNullOrEmpty(Session(GetSessionKey("UserName"))) Then 
    Dim userName As String = HttpContext.Current.User.Identity.Name.Split("\")(1) 
    SessionInitialiser(userName) 
End If 
Response.Redirect("~/EventRegistration.aspx") 

Page_Load функция:

Dim adserv As New ActiveDirectory() 
     Dim userDetails As WebServiceUserPrincipal = adserv.Getuser(userName) 
     Dim userGroups As String() = adserv.GetUserGroups(userName) 

     Dim _dt As New DataTable 
     _dt.Columns.Add("Group") 

     For Each item As String In userGroups 
      Dim _row As DataRow = _dt.NewRow() 
      _row("Group") = item 
      _dt.Rows.Add(_row) 
     Next 

     Session(GetSessionKey("FullName")) = userDetails.DisplayName 
     Session(GetSessionKey("Groups")) = _dt 
     Session(GetSessionKey("UserName")) = userName 
     Session(GetSessionKey("Switch")) = "OK" 


     Dim filter_auditGroup As String = ConfigurationSettings.AppSettings("FILTER_GROUP") 
     Dim _adt As New DataTable 
     _adt.Columns.Add("Group") 
     For Each item As String In userGroups 
      If (item = filter_auditGroup) Then 
       Dim _row As DataRow = _adt.NewRow() 
       _row("Group") = item 
       _adt.Rows.Add(_row) 
      End If 
     Next 
     'If _adt.Rows.Count > 0 Then 
     ' Session(GetSessionKey("AuditGroups")) = _adt 
     'End If 
    End Sub 

Функция Проверка доступа

If Not IsPostBack Then 
     Dim arr As Array = Request.Url.AbsolutePath.Split("/") 
     Dim page As String = arr(arr.Length - 1).ToString().Split(".")(0) '-- Ballot.aspx, remove .aspx and get Ballot only 

     Dim signOut As New List(Of String) 
     signOut.Add("SwitchUser") 
     signOut.Add("SignOut") 

     If (Not signOut.Contains(page, StringComparer.OrdinalIgnoreCase)) Then 
      If (String.IsNullOrEmpty(Session(GetSessionKey("UserName")))) Then 
       Response.Redirect("~/Default.aspx") 
      Else 
       Dim group As DataTable = Session(GetSessionKey("Groups")) 
       'Dim auditGroup As DataTable = Session(GetSessionKey("AuditGroups")) 

       Dim adminPage As New List(Of String) 
       adminPage.Add("BallotProcess") 
       adminPage.Add("CodeTablePage") 
       adminPage.Add("MaintainBallotItem") 
       adminPage.Add("MaintainCodeItem") 
       adminPage.Add("MaintainItemDetail") 

       If (adminPage.Contains(page, StringComparer.OrdinalIgnoreCase) And Not CheckAdmin(group)) Then 
        Response.Redirect("~/EventRegistration.aspx") 
       End If 

       'If (page.Equals("AuditPage", StringComparison.OrdinalIgnoreCase) And Not CheckAudit(group)) Then 
       ' Response.Redirect("~/default.aspx") 
       'End If 
       End If 
     End If 
    End If 

Проверка администратора Функция

Private Function CheckAdmin(ByVal group As DataTable) As Boolean 
    Dim i As Integer 
    If Not IsNothing(group) Then 
     For i = 0 To group.Rows.Count - 1 
      If group.Rows(i)(0) = ConfigurationSettings.AppSettings("FILTER_GROUP") Then 
       CheckAdmin = True 
       Session(GetSessionKey("EventAdmin")) = 1 
       Exit Function 
      End If 
     Next 
    End If 
End Function 

ответ

0

Я нашел свой ответ через бесчисленное количество отладки и все, что мне нужно для исправления этого кода, просто переместите Response.Redirect ("~/EventRegistration.aspx") в инструкцию If Else выше. Это связано с тем, что когда оператор if else выполняет идентификацию, после выражения if else значение будет Nothing, то оно перенаправляется на страницу, пока страница попытается получить личность, и она снова выполнит if, если еще много раз ..

If String.IsNullOrEmpty(Session(GetSessionKey("UserName"))) Then 
Dim userName As String = HttpContext.Current.User.Identity.Name.Split("\")(1) 
SessionInitialiser(userName) 

Response.Redirect ("~/EventRegistration.aspx") End If

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