2012-07-10 73 views
6

我很新的Web開發和ASP.net ,但我想知道以下問題:靜態變量干擾ASP.net?

如果我宣佈一個網頁上的靜態變量和幾個 用戶同時訪問同一頁面。這個靜態 變量對每個用戶來說都是唯一的,還是會干擾 不同的用戶?

感謝

回答

7

是的,它會在用戶之間產生干擾,並且由單個用戶的併發請求之間。避免ASP.NET中的靜態字段(以及大多數其他開發),除非您確信自己在做什麼。

考慮使用會話狀態爲你在這裏做什麼,或作爲請求本身(表單數據,cookie等)的一部分。

2

這是靜態變量唯一的每個用戶

將它與不同用戶的干擾?

是的。

你想使用一些其他持久性介質,如會話狀態,caching

有些人用在ASP.NET領域[ThreadStatic]屬性,使其爲每個用戶唯一的,但是這是危險不應該這樣做。不惜一切代價避免這種情況。我只是爲了防止別人推薦它而提起它。

+0

重新編輯;關於'[ThreadStatic]'的一個特別的事情是,ASP.NET可以在不同的線程上處理請求的不同步驟* - 這可能會導致非常奇怪的行爲'[ThreadStatic]' – 2012-07-10 12:57:58

+0

@MarcGravell是的,那是爲什麼我強烈不鼓勵使用它。不能保證ASP.NET會以相同的線程開始完成請求。特別是在C#5/MVC4中,它將阻止利用新的異步/等待。 – vcsjones 2012-07-10 13:00:37