ASP.NET – 从客户端访问两次网页

前端之家收集整理的这篇文章主要介绍了ASP.NET – 从客户端访问两次网页前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果一个用户在第一个页面返回到客户端之前尝试访问两次ASP.NET页面会发生什么?看看下面的代码
  1. Partial Class _Default
  2. Inherits System.Web.UI.Page
  3.  
  4. Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
  5. Session("ID") = 1
  6. End Sub
  7.  
  8. Protected Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button1.Click
  9. Response.Redirect("Default3.aspx")
  10. End Sub End Class
  11.  
  12. Partial Class Default2
  13. Inherits System.Web.UI.Page
  14. Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
  15. Session("ID") = 2
  16. End Sub
  17.  
  18. Protected Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button1.Click
  19. Response.Redirect("Default3.aspx")
  20. End Sub
  21. End Class
  22.  
  23. Imports System.Threading
  24. Partial Class Default3
  25. Inherits System.Web.UI.Page
  26.  
  27. Dim intTest As Integer = 0
  28.  
  29. Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
  30. For intTest = 0 To 10
  31. Response.Write(Session("ID") & " " & intTest & "<br>")
  32. Thread.Sleep(1000)
  33. Next
  34. End Sub
  35. End Class

从default.aspx(通过单击按钮)和default2.aspx(通过单击按钮)同时访问同一客户端(PC)的default3.axpx会导致会话变量在两个请求上都相同(尽管我将变量设置为1第一个请求和第二个请求2.是否有可能在没有线程的情况下复制此行为?我相信我在一个不使用线程的asp.net应用程序中有这个bug.

解决方法

你的问题不是关于多线程的;它是关于SessionState的.

ASP.NET运行时使用lock to avoid overriding same session variables虽然它可以处理多个请求.

这就是为什么你没有看到错过匹配的结果.

还请看 –

ASP.NET Application and Page Life Cycle

ASP.NET Application Life Cycle Overview

猜你在找的asp.Net相关文章