2016-12-20 13 views
0

親愛なるStackOverflowのコミュニティをリダイレクト「リダイレクトされたページがあまりにも多い」のように、ループしているものが起こり、2日後にはわかりません。ページは、私はまだASP.NETや演奏を持つ新しいが遊んでてきたと私はそれがエラーを示して、私のログインを認証するためにエラーが発生しました、</p> <p>を何回もASP.NET

私はすべてのページのグローバル認証になるように、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

私は無数のデバッグを通して私の答えを見つけました。このコードを修正する必要があるのは、上記の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") END IF

関連する問題

 関連する問題