2012-10-20 24 views
0

我知道ASP.NET使用工作線程爲請求提供服務。因此,客戶端A和客戶端B可以發出請求,同時處理這些請求。ASP.NET - 針對同一客戶端的多個工作線程

客戶端是否可以同時發出多個請求。請參閱下面的代碼:

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 

請打開Default5.aspx通過specifiying這個網址: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 twice from client。在這個例子中,兩種情況下會話變量都不是2。

我的問題是; ASP.NET可以同時處理來自同一客戶端的多個請求。贏得迴應似乎表明一次處理一個請求。

回答

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

是,如果你禁用會話,或使用與處理程序進行會話,或做你的一個完全自定義會話。

它也可以幫助,如果你使用一個以上的池相同的Web應用程序作出"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

+0

你是什麼意思:「如果你禁用會話」?我在問題中提供的示例代碼使用會話變量。謝謝。 – w0051977

+0

@ w0051977是的我看到使用會話變量作爲測試的例子,如果您需要它們,並且無法避免它們,您無法使用來自asp.net的現有會話代碼 - 所以您需要使自定義會話句柄代碼(因爲這個原因,我做了一個,並不是那麼難) – Aristos

+0

@ w0051977會話實際上是將用戶的cookie與數據庫中的一行連接起來,這些數據庫保留了一些數據。 – Aristos

0

對於任何人找到這篇文章,如果喲ü不需要會話寫訪問,宣佈只讀訪問ASP.NET允許同時運行的要求,因爲它沒有獲得會話鎖:

在網頁:

EnableSessionState="ReadOnly" 

還是在通用通過執行的處理程序:

IReadOnlySessionState