最初のページがクライアントに返される前に、1人のユーザーがASP.NETページに2回アクセスしようとするとどうなりますか?以下のコードをご覧ください。
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
default.aspx(ボタンをクリックする)とdefault2.aspx(ボタンをクリックする)から同じクライアント(PC)からdefault3.axpxに同時にアクセスすると、両方の要求でセッション変数が同じになります(ただし、変数を1に設定しました)最初のリクエストと2番目のリクエスト)。スレッド化せずにこの動作を複製することは可能ですか?スレッドを使用しないasp.netアプリケーションにこのバグがあると思います。