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

标签 asp.net vb.net

如果一个用户在将第一个页面返回给客户端之前尝试访问 ASP.NET 页面两次,会发生什么情况?看看下面的代码:

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Session("ID") = 1
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Redirect("Default3.aspx")
    End Sub End Class

Partial Class Default2
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Session("ID") = 2
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Redirect("Default3.aspx")
    End Sub
End Class

Imports System.Threading
Partial Class Default3
    Inherits System.Web.UI.Page

    Dim intTest As Integer = 0

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        For intTest = 0 To 10
            Response.Write(Session("ID") & " " & intTest & "<br>")
            Thread.Sleep(1000)
        Next
    End Sub
End Class

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

最佳答案

enter image description here

您的问题不是关于多线程;而是关于多线程。这是关于 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 - 从客户端访问网页两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980123/

相关文章:

C# ASP.Net 找不到类型或命名空间名称 'iAnywhere'

javascript - 如何从下拉列表中删除水平空格?

asp.net - ASP.NET 中缓存的模式和最佳实践是什么?

vb.net - 如何将文件复制到剪贴板并将其粘贴到其他位置?

asp.net GridView IF 空显示消息

asp.net - 如何在 IIS 上为 ASP.NET 设置正确的文件权限

vb.net - DataGridView - 如何隐藏 "new"行?

jquery - 如何以多列表格格式显示自动完成列表?

asp.net-mvc - MVC - 更改比较属性错误消息

c# - 未应用 CSS 样式