2016-12-20 1 views
0

친애하는 StackOverflow의 커뮤니티,페이지 리디렉션 너무 많이 ASP.NET

내가 ASP.NET 및 재생 장난 한 여전히 새로운 오전과 내가 오류를 보여줍니다 어디에 내 로그인을 인증하는 데 오류가 발생했습니다 "페이지가 너무 많이 리디렉션 된 것"과 같은 일이 반복적으로 발생하고 2 일 후에는 파악할 수 없습니다.

모든 페이지에 대한 전역 인증이 될 수 있도록 header.acsx를 사용하여 로그인을 구현했습니다.

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 
다음

는 head.vb의 코드

답변

0

수많은 디버그를 통해 내 대답을 찾았으며이 코드를 수정해야하는 이유는 위의 If Else 문으로 Response.Redirect ("~/EventRegistration.aspx")를 옮기는 것입니다. 이것은 if else 문이 ID를 얻기 위해 실행될 때, if else 문 다음에 값이 Nothing이 될 것이므로 페이지가 ID를 얻으려고 시도하는 동안 페이지로 리다이렉트하고 다른 경우에는 무수히 많은 횟수를 실행하기 때문입니다 ..

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

Response.Redirect를 ("~/EventRegistration.aspx") 최종면

관련 문제