2012-07-10 28 views
6

tôi khá mới để phát triển Web và ASP.net nhưng tôi đã tự hỏi những câu dưới đây:Biến nhiễu tĩnh ASP.net?

Nếu tôi khai báo một biến tĩnh trên một trang web và một số người dùng truy cập cùng một trang cùng một lúc. Đây có phải là biến số tĩnh duy nhất cho mỗi người dùng hay nó sẽ can thiệp với người dùng khác nhau?

Cảm ơn

Trả lời

7

Có, nó sẽ cản trở người dùng và giữa các yêu cầu đồng thời của một người dùng. Tránh các trường tĩnh trong ASP.NET (và hầu hết các phát triển khác) trừ khi bạn rất chắc chắn về những gì bạn đang làm.

Cân nhắc sử dụng trạng thái phiên cho những gì bạn đang làm ở đây hoặc một phần nào đó trong chính yêu cầu đó (dữ liệu biểu mẫu, cookie, v.v ...).

2

là tĩnh này biến duy nhất cho mỗi người dùng

số

nó sẽ gây trở ngại cho người dùng khác nhau?

Có.

Bạn sẽ muốn sử dụng một số phương tiện kiên trì khác, giống như trạng thái phiên, caching vv

Một số người sử dụng [ThreadStatic] thuộc tính trên các lĩnh vực trong ASP.NET để nó là duy nhất cho mỗi người dùng, nhưng đó là nguy hiểm và không nên thực hiện. Tránh điều này bằng mọi giá. Tôi chỉ mang nó lên trong trường hợp người khác đề xuất nó.

+0

Chỉnh sửa lại; một điều đặc biệt cần lưu ý về '[ThreadStatic]' là ASP.NET có thể xử lý các bước khác nhau của một yêu cầu ** trên các luồng khác nhau * - có thể dẫn đến hành vi rất kỳ lạ với '[ThreadStatic]' –

+0

@MarcGravell yes, đó là tại sao tôi không khuyến khích sử dụng nó. Không có đảm bảo rằng ASP.NET sẽ hoàn thành yêu cầu với cùng một chủ đề nó bắt đầu. Đặc biệt với C# 5/MVC4 trên đường đi, nó sẽ ngăn chặn việc tận dụng lợi thế của async/chờ đợi mới. – vcsjones