netcore
每次请求控制器的某个方法,
控制器里的 Dictory字典里的数据都是空的(不会报错上一次请求时保存的数据)
这是为什么?我该用什么数据保存
形如
public dictory dic=new dictory <string,stirng>();
//方法
public string Test(){
}
首先,你要知道 每次请求 发生了什么。
如果控制器不是单例,每次请求都会new一个控制器实例,字典作为每个实例的一个成员,自然也会初始化(新new)
通常用数据库,如果只是临时数据,不需要持久化,可以可以静态成员变量或 IMemoryCache
像这样
public static Dictionary<string, string> dic = new Dictionary<string, string>();
提问前贴一下代码,你这样提问别人很难回答你的
@信海哥: 额,你可以用静态static修饰一下Dictionary? 你这样的操作不太规范没像你这样写过
@godcloudy: 那是要怎么写,举个例子?
web请求本来就是无状态的,不会保存上一次请求的数据了。可以放了静态变量里,或者放了数据库、内存缓存里。或者自定义一个单例服务。
Dictionary 是非线程安全的、建议换成线程安全的字段