Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么构成web应用程序实例/会话?_C#_Asp.net - Fatal编程技术网

C# 什么构成web应用程序实例/会话?

C# 什么构成web应用程序实例/会话?,c#,asp.net,C#,Asp.net,有件事我不清楚 假设我有一些module.dll 它有一个名为UserSession的静态类 例如,我是否可以安全地将特定于用户的信息存储在此处: 例: 我知道我可以使用HTTPConext.Session。。。。但是我想知道会话的确切范围/主要是,如果用户有一个延长的会话。假设用户登录,我在会话(用户)中存储了一些内容 如果他在3周后回来,我读了他的一个小甜饼,但它仍然有效,那么这一页看起来和感觉应该像他从未离开过。HTTPContext或任何会话变量何时被擦除,并且必须重新查询和重置 谢谢从

有件事我不清楚

假设我有一些module.dll

它有一个名为UserSession的静态类

例如,我是否可以安全地将特定于用户的信息存储在此处: 例:

我知道我可以使用HTTPConext.Session。。。。但是我想知道会话的确切范围/主要是,如果用户有一个延长的会话。假设用户登录,我在会话(用户)中存储了一些内容

如果他在3周后回来,我读了他的一个小甜饼,但它仍然有效,那么这一页看起来和感觉应该像他从未离开过。HTTPContext或任何会话变量何时被擦除,并且必须重新查询和重置


谢谢

从上次请求开始,用户会话只持续一定的时间,我相信默认为20分钟。在此之后,它可能会持续几分钟,这取决于垃圾收集器何时执行其任务。这不会持续三周。您可以将必要的值存储在cookie中,或者更好地使用对数据库记录的引用来存储cookie。但是,所有这些都忽略了安全问题…

一个用户会话只会在上次请求后的一定时间内持续,我相信默认值为20分钟。在此之后,它可能会持续几分钟,这取决于垃圾收集器何时执行其任务。这不会持续三周。您可以将必要的值存储在cookie中,或者更好地使用对数据库记录的引用来存储cookie。然而,所有这些都忽略了安全问题…

不管时间长短,会话变量都不一定是一个好方法。当您将应用程序升级到web场时,它们会增加很大的复杂性。如果它是非敏感数据,那么cookie就是一种方法。如果它是大量数据的敏感数据,您可以考虑创建某种类型的用户身份验证和/或加密cookie数据。

会话变量不一定是一个好的方法,不管时间的长短。当您将应用程序升级到web场时,它们会增加很大的复杂性。如果它是非敏感数据,那么cookie就是一种方法。如果它是大量数据的敏感数据,则可以考虑创建某种类型的用户身份验证和/或加密cookie数据。< / P>在类中的静态字段中存储值与存储会话中的值不一样。静态值的作用域为每个应用程序实例,会话值的作用域为每个用户会话。这意味着该应用程序的每个用户都可以读取静态值,因此它不是存储用户特定数据的安全场所。在类的静态字段中存储值与在会话中存储值不同。静态值的作用域为每个应用程序实例,会话值的作用域为每个用户会话。这意味着该应用程序的每个用户都可以读取静态值,因此它不是存储用户特定数据的安全场所?你确定吗?@Shai我在网上找不到回答这个问题的参考资料。根据以前的阅读资料,我相信这是正确的。我刚刚收到了C#5的书,所以很快我就能更新这个答案,看看这是否正确……太好了。谢谢你的回复。无论哪种方式,我都对答案很感兴趣。会话取决于垃圾收集器?你确定吗?@Shai我在网上找不到回答这个问题的参考资料。根据以前的阅读资料,我相信这是正确的。我刚刚收到了C#5的书,所以很快我就能更新这个答案,看看这是否正确……太好了。谢谢你的回复。无论哪种方式,我都对答案很感兴趣。

UserSession.Name = "xxx"