ASP.NET - 同一客户端的多个工作线程

时间:2012-10-20 12:18:59

标签: asp.net vb.net

我理解ASP.NET使用工作线程提供请求。因此,客户端A和客户端B可以发出请求,同时处理请求。

客户端可以同时发出多个请求吗?请参阅以下代码:

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

    Dim intCount1 As Integer, intCount2 As Integer

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'If Session("Test") = "" Then
        Session("Test") = Request.QueryString("ID")
        'End If
        Response.Write(Session("Test"))
    End Sub
End Class

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

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

请通过指定此URL打开Default5.aspx:default5.aspx?id = 1并使用以下URL打开另一个页面:default5.aspx?id = 2。然后从浏览器中使用default5.aspx?id = 1打开导航到default4.axpx(通过指定URL),当它运行时,从浏览器导航到default4.axpx,并打开default5.aspx?id = 2。两种情况的结果是:

2,0
2,1
2,2
2,3
2,4
2,5
2,6
2,7
2,8
2,9
2,10

两种情况下的会话变量都是2(我明白为什么会这样)。请看昨天我问过的一个问题:ASP.NET - Accessing web page twice from client。在这个例子中,会话变量在两种情况下都不是2。

我的问题是; ASP.NET可以同时处理来自同一客户端的多个请求。 Wins响应似乎表明一次处理一个请求。

2 个答案:

答案 0 :(得分:1)

对于其他发现此帖子的人来说,如果您不需要对Session的写访问权限,则声明只读访问权限允许ASP.NET同时运行请求,因为它不必获取会话锁:

在页面中:

EnableSessionState="ReadOnly"

或者在通用处理程序中实现:

IReadOnlySessionState

答案 1 :(得分:0)

My question is; can ASP.NET process multiple requests 
from the same client at the same time.

如果你禁用会话,或者使用没有会话的处理程序,或者完全自定义你的会话,那就是。

如果您为使用"web garder"

的相同网络应用程序使用多个池,它也可能有所帮助

您还可以阅读:
ASP.NET Server does not process pages asynchronously
Trying to make Web Method Asynchronous
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely