2015-02-03 9 views
0

Я пишу класс для проверки сессий.Тема отменялась в Response.Redirect

Я получаю эту ошибку

Тема была быть прервана

и на исследования обнаружили, что путь вокруг него, чтобы использовать параметр false, но с помощью этого параметра не перенаправлять и вместо позволяет код после выполнения строки перенаправления. Здесь должно быть что-то простое и принципиальное, что мне не хватает, ниже мой код. Это ломается в методе InvalidAccess().

Public Sub New() 
     CheckSessionCustomerID() 
     If GotConnectionString() = False Then 
      InvalidAccess() 
     End If 
    End Sub 

    Public Function GotConnectionString() As Boolean 
     GotConnectionString = False 
     Try 
      If PublicDBConnectionStringName.Trim = String.Empty Then 
       GotConnectionString = False 
      Else 
       PublicConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings(PublicDBConnectionStringName).ToString 
       If PublicConnectionString.Trim <> String.Empty Then 
        GotConnectionString = True 
       End If 
      End If 
     Catch ex As Exception 
      ErrorLogging.LogError(MethodBase.GetCurrentMethod().DeclaringType.Name, MethodInfo.GetCurrentMethod().Name.ToString(), PublicBBTCustomerID & "|" & ex.Message.ToString()) 
      GotConnectionString = False 
     End Try 
    End Function 

    Public Sub CheckSessionCustomerID() 
     Dim SessionEmployeeID As Integer 
     Try 
      If PublicTesting Then 
       SessionEmployeeID = 1 
      Else 
       If IsNothing(HttpContext.Current.Session("EmployeeIDLoggedIn")) Then 
        InvalidAccess() 
       ElseIf HttpContext.Current.Session("EmployeeIDLoggedIn").ToString = "0" Then 
        InvalidAccess() 
       Else 
        SessionEmployeeID = Val(HttpContext.Current.Session("EmployeeIDLoggedIn")) 
        HttpContext.Current.Session("EmployeeIDLoggedIn") = SessionEmployeeID.ToString() 
       End If 
      End If 
     Catch ex As Exception 
      InvalidAccess() 
     End Try 
    End Sub 
    Private Sub InvalidAccess() 
     Try 
      System.Web.HttpContext.Current.Response.Redirect("/InvalidAccess.aspx") 
     Catch ex As Exception 
      System.Web.HttpContext.Current.Response.Redirect("/Login.aspx?ID=" & PubliCustomerID & "&ID2=5") 
     End Try 
    End Sub 

ответ

1

Тема была прервана время совершенно нормально, когда вы поменяете и хотите, чтобы остановить дальнейшее выполнение запроса.

В вашем InvalidAccess метода удалите Try...Catch блок - это бессмысленно. Response.Redirect никогда не сделает интересующее вас исключение.

Непонятно, что вы пытались достичь с помощью этого try...catch в своем методе.

В качестве альтернативы вы можете использовать параметр false в Response.Redirect.

+0

Когда я использую ложный параметр , он не перенаправляется. Он продолжает выполнение кода на этой странице. – Freq

0

Вы можете использовать ложный параметр на Response.Redirect, но то и вы должны выполнить запрос, чтобы остановить выполнение, если это то, что вы хотите:

Response.Redirect("/InvalidAccess.aspx", False) 
HttpContext.Current.ApplicationInstance.CompleteRequest() 

http://www.blakepell.com/asp-net-avoid-threadabortexception-on-response-redirect

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