使用AJAX,我是否需要关心ASP.NET中的线程安全性?

cod*_*nix 7 .net asp.net ajax multithreading locking

问题是,是否有可能从多个线程执行同一会话的请求?ASP.NET中的方法是否可重入?特别是我们使用的是AJAX,这意味着正在进行异步请求.

这是否意味着将锁定放在会话内放置的对象上?

我知道在处理静态和应用程序范围的变量时,锁是必不可少的,但问题对于会话对象是否同样如此?

Fré*_*idi 3

ASP.NET 通常每个请求使用一个线程。它可以使用多个线程,例如在提供异步页面时,但即使如此,在任何给定时间也只有一个线程处理请求。

但是,从多个线程使用会话状态是安全的,因为对会话对象的访问是序列化的。来自MSDN

如果其他页面尝试同时访问会话状态怎么办?在这种情况下,当前请求最终可能会处理不一致的数据或不是最新的数据。为了避免这种情况,会话状态模块实现了读取器/写入器锁定机制并对状态值的访问进行排队。具有会话状态写访问权限的页面将持有会话的写锁,直到请求终止。