簡體   English   中英

為什么我的ASP.NET站點采用單線程?

[英]Why is my ASP.NET site acting single threaded?

我有一個在IIS中運行的ASP.NET站點,我注意到如果一個頁面很慢,它似乎運行緩慢,所以我設置了一個測試,看它是否正在運行,好像它是一個單一的線程(即如果一個頁面請求正在運行,所有其他人必須等待)。 我創建了一個非常簡單的頁面(沒有母版頁,只有默認的aspx代碼,除了我添加了一個Literal來轉儲調試代碼),代碼讀取當前時間,睡眠10秒,然后退出,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    DateTime now = DateTime.Now;
    System.Threading.Thread.Sleep(10000);         
    Literal1.Text = now.ToShortDateString() + " " + now.ToShortTimeString() + " " + now.Second + ":" + now.Millisecond;
}

然后我同時在兩個不同的選項卡中打開頁面。 每個選項卡上的時間戳幾乎相隔10秒,這在我看來意味着第二頁請求被阻止並等待第一頁請求在運行之前完成。

我嘗試在web.config中注釋掉所有http模塊並禁用Global.asax中的所有代碼,但我仍然看到這個問題。

這聽起來像會話狀態問題。

對會話狀態的訪問是每個會話獨占的,這意味着如果兩個不同的用戶發出並發請求,則同時授予對每個單獨會話的訪問權限。 但是,如果對同一會話發出兩個並發請求(通過使用相同的SessionID值),則第一個請求將獲得對會話信息的獨占訪問權。 第二個請求僅在第一個請求完成后執行。 [...]

來源: ASP.Net會議狀態概述

嘗試在web.config中禁用會話狀態(或將其標記為只讀)以確認這確實是問題,或者使用兩個不同的瀏覽器(獲取不同的會話)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM