我有一個是這樣的每個用戶是否有唯一的靜態對象?
public partial class _Default : System.Web.UI.Page
{
#region initial variables setup
private static exam theExam;
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string userid = Request.Querystring["user"].ToString();
theExam = new exam(userid, "some values");
}
}
// rest of code.
.NET應用程序(C#)現在的問題是,如果創建並分配給頂部的靜態申報考試theExam的一個實例,用戶105日誌。如果用戶204然後從不同的計算機登錄,則即使在用戶105的計算機上,頂部的靜態對象是否獲得204的值?
澄清:靜態對於應用程序域是唯一的,在這種情況下,這是整個Web應用程序。注意:如果您使用負載均衡,它們在兩臺服務器之間並不是唯一的。所以請記住水平縮放。 – Aren 2010-09-23 22:28:11
如果使用[ThreadStaticAttribute],每個線程將擁有自己的該靜態變量的實例。 – 2010-09-23 23:31:11
的確,但是線程被重用於不同的請求,所以它不夠好。使用會話是這樣的最好的方式。 – 2010-09-23 23:47:30