【问题标题】:Static data in an ASP.NET page - threadsafe?ASP.NET 页面中的静态数据 - 线程安全?
【发布时间】:2010-10-16 10:36:16
【问题描述】:

这个问题的背景是我需要在(静态)WebMethod 中使用一些用户会话数据。我创建了一个引用我需要的数据的静态属性,如下所示:

private static UserWebSession UserWebSession
{
    get
    {
        return (UserWebSession)HttpContext.Current.Session["UserWebSession"];
    }
}

然后我可以在我的页面的静态 WebMethod 中调用它。

我的问题是,这种技术线程安全吗?或者这个属性的值是否会随着每个新的页面请求而更新 - 换句话说,它将返回最近请求页面的用户的 UserWebSession?

【问题讨论】:

    标签: asp.net web-services session thread-safety asmx


    【解决方案1】:

    没关系 - HttpContext.Current 就是专为这类事情而设计的。你不会得到以前用户的会话。

    但它取决于线程(我相信) - 所以如果您启动任何额外的后台线程,它们将无法看到当前上下文。

    另外请注意,虽然此调用在不获取错误上下文方面是安全的,但当涉及到您对上下文的实际操作 时,正常的并发警告适用。

    【讨论】:

      【解决方案2】:

      我不知道页面方法能够访问会话状态。如果可以,那你可能没问题。我记得对 Session 状态的访问是序列化的,因此对于给定的会话,一次只能到达一个请求。

      【讨论】:

        猜你喜欢
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 2014-09-16
        • 2012-09-22
        • 2015-03-24
        • 2010-10-02
        相关资源
        最近更新 更多