我正在编写一个类来验证会话。
我收到此错误
线程被中止
并且在研究中发现它的方法是使用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
答案 0 :(得分:1)
当你重定向并希望停止进一步执行请求时,线程被中止是完全正常的。
在InvalidAccess
方法中删除Try...Catch
块 - 这是毫无意义的。
Response.Redirect
永远不会抛出你感兴趣的例外。
在您的方法中使用此try...catch
尝试实现的目标并不十分清楚。
或者,您可以在false
中使用Response.Redirect
参数。
答案 1 :(得分:0)
您可以在Response.Redirect上使用false参数,但是如果您想要的话,还必须完成停止执行的请求:
Response.Redirect("/InvalidAccess.aspx", False)
HttpContext.Current.ApplicationInstance.CompleteRequest()
http://www.blakepell.com/asp-net-avoid-threadabortexception-on-response-redirect