0

我了解 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),在运行时,从打开 default5.aspx?id=2 的浏览器导航到 default4.axpx。两种情况的结果都是:

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 two from client。在此示例中,会话变量在两种情况下都不是 2。

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

4

2 回答 2

1

对于发现这篇文章的其他人,如果您不需要对 Session 的写访问,则声明只读访问允许 ASP.NET 并发运行请求,因为它不必获得会话锁:

在页面中:

EnableSessionState="ReadOnly"

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

IReadOnlySessionState
于 2016-05-18T19:07:28.363 回答
0
My question is; can ASP.NET process multiple requests 
from the same client at the same time.

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

如果您为相同的 Web 应用程序使用多个池来创建“Web garder” ,它也可能会有所帮助

您还可以阅读:
ASP.NET 服务器不异步处理页面
尝试使 Web 方法异步
Web 应用程序在处理共享同一会话的另一个 Web 应用程序时被阻止
哪些性能计数器可用于识别 ASP.NET 瓶颈?
完全替换 ASP.Net 的会话

于 2012-10-20T12:26:52.943 回答