我有一个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或会话.