c# – 如何在Web会话中共享静态变量

我有一个mvc webapi服务设置,可以从sql server数据库中提取和推送数据.

在拥有webapi的Web项目中,我有一个Static类,它只包含一些可从webapi方法访问的全局变量.以下是静态类的一个非常简洁的示例:

public static class SystemProperties
{
    public static int currentContactID;
}

访问WebApi时,我从调用的Http Headers中删除ContactID,并将SystemProperties.CurrentContactID设置为它.

在webapi的方法中,我访问SystemProperties.CurrentContactID进行数据调用.

当有并发的webapi调用时,我发现了一个问题,currentContactID正在混淆.

我的问题是,静态类成员如何在调用会话之间共享?它是否会穿着最好的衣服,如果前​​一个人还在那里,那么他们会被那些用他们的细节覆盖变量的新人搞砸了?

我应该使用不同的方法来存储这些细节吗?

提前致谢

最佳答案 您可以使用Current HttpContext存储要在HttpRequest的生命周期内使用的项目

HttpContext.Current.Items["currentContactID"] = value

因此,您可以从Request标头中获取数据,并将其存储在此处,并且在该用户的当前http Web请求期间可用.每个http请求都有自己的Items字典,因此不会被同时请求覆盖

如果您需要为同一用户的多个请求存储变量,则需要查看cookie或会话.

点赞