Asp.net core ASP.NET核心清除会话问题

Asp.net core ASP.NET核心清除会话问题,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我有一个应用程序,我在其中保存会话的一些信息,稍后我将这些信息保存到数据库时分配给模型。 例如,User1保存了以下模型: ... MyModel model = new MyModel(); model.name = mypostedModel.name; model.type = HttpContext.Session.GetString("UniqueTypeForThisUser"); ... 在我将模型保存到数据库中后,在post方法的末尾,我用以下行清除会话:

我有一个应用程序,我在其中保存会话的一些信息,稍后我将这些信息保存到数据库时分配给模型。 例如,User1保存了以下模型:

...
MyModel model = new MyModel();
model.name = mypostedModel.name;
model.type = HttpContext.Session.GetString("UniqueTypeForThisUser");
...
在我将模型保存到数据库中后,在post方法的末尾,我用以下行清除会话:

HttpContext.Session.Clear();
假设同时有一个User2创建了一个新模型,我在会话中为User2保存了另一个值。与前面一样,在post方法的末尾,我使用clear()方法清除会话

此清除会话方法是为所有用户清除会话,还是仅为一个用户清除会话。例如,如果User1首先保存模型并为所有用户清除会话,则User2将清除其会话变量(丢失),并为模型的“类型”列指定空值

对于文档,我不清楚这一点。谢谢

此清除会话方法是为所有用户清除会话,还是仅为一个用户清除会话


HttpContext
是用于当前请求的。由于每个用户都有不同的请求,因此在当前请求上清除会话只会为该请求的用户而不是所有用户清除会话。

您可以访问的会话对象,例如通过
HttpContext。会话
特定于单个用户。您在那里所做的一切只会影响属于此会话的用户,并且其他用户的会话之间没有混合

这也意味着您不需要选择特定于用户的会话配置密钥名称。因此,您不必使用
GetString(“UniqueTypeForThisUser”)
,只需使用通用常量名称引用值即可:

var value1 = HttpContext.Session.GetString("Value1");
var value2 = HttpContext.Session.GetString("Value2");
然后,每个用户会话将分别具有这些值。因此,调用
Session.Clear()
也只会清除该会话特定于其用户的会话存储


如果您确实需要不同的方式来存储状态,请务必查看。例如,应该独立于用户存储的内容可以使用存储键来存储。

您可以删除特定的键

 HttpContext.Session.Remove("YourSessionKey");

因此,对于asp.net核心mvc中的经典post方法,每个用户所做的都是一个特定的请求,因此每个用户都有自己的会话。因此,当我在发布后清除其中一个会话时,其他会话不会被触发。