Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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#在会话变量中存储备用文本或从数据库中检索_C#_Asp.net_Session Variables - Fatal编程技术网

C#在会话变量中存储备用文本或从数据库中检索

C#在会话变量中存储备用文本或从数据库中检索,c#,asp.net,session-variables,C#,Asp.net,Session Variables,我正在构建一个web系统,各个客户端将在整个站点中为默认实例提供备用文本。一个地方是主导航,但还有其他地方。默认值可能是“project”,但他们可能希望将其称为“event” 我正在调用所有的术语设置(这里有一个大约15个的列表)并创建一个ArrayList,该ArrayList的id和默认值或它们的替换项作为ArrayList中的项 我还有一个名为TermKey的枚举键列表,它具有默认值和相应的ID号 在整个代码中,我将引用TermKey.Project,然后执行我视为选项的其中一项操作。

我正在构建一个web系统,各个客户端将在整个站点中为默认实例提供备用文本。一个地方是主导航,但还有其他地方。默认值可能是“project”,但他们可能希望将其称为“event”

我正在调用所有的术语设置(这里有一个大约15个的列表)并创建一个ArrayList,该ArrayList的id和默认值或它们的替换项作为ArrayList中的项

我还有一个名为TermKey的枚举键列表,它具有默认值和相应的ID号

在整个代码中,我将引用TermKey.Project,然后执行我视为选项的其中一项操作。 1-从会话中提取文本(如果客户端已将其设置为“事件”,则文本“事件”将在那里等待调用) 2-每次需要时都从数据库中提取文本。 3-每次加载页面时拉取客户列表


如果您对每种方式的影响有一些想法,或者对于这类事情是否有最佳实践,我们将不胜感激。

如果这是针对每个用户的,您也可以使用会话。不要过度使用is(只对少量数据使用)

为每个请求访问数据库可能会有过大的杀伤力,特别是如果这些数据不经常更改的话——从本地内存检索要比从网络检索快得多


话虽如此,使用session InProc会将您限制在单个服务器上,并且不允许您扩展到web场。

无论如何,您不应该在每个页面上调用DB来获取备用文本。我认为如果它们(每个用户)不太多,就可以将它们存储在会话中。

我过去这样做的方式是先有一个数据库类型代码表,然后是一个特定于客户端的转换表,如下所示:

TABLE ObjectType
ObjectTypeCode

TABLE ClientObjectTypeTranslation
ClientId
ObjectTypeCode
OverrideDescription
这允许我的代码始终引用我所知道的内容(即ObjectTypeCode),然后在每个查询中加入转换表,并在相关的地方显示覆盖描述


不过,对于您的场景来说,这可能有点过头了。

会话并不是提供此类信息的最佳场所。是的,它是用户绑定的,会话状态实际上是用户绑定、会话绑定信息的存储库。您所拥有的似乎是超出会话范围的信息

反映此信息的最佳方法是使用自定义。您可以使用它来公开需要公开的信息的属性,而属性中的逻辑将根据系统中的用户(或者匿名用户,如果他们没有经过身份验证)将值设置为适当的值

在您的情况下,您可以根据需要在概要文件提供程序中缓存这些值并访问数据库


然后,此信息通过公开(如果您使用ASP.NET MVC,也可以通过公开)。

如果您希望跨会话持久化(并且数据不太多),则会话可以这样做。另一个选择是cookies。
我建议在会话开始时,在用户对象属性中实例化会话变量,然后可以引用User.DefaultText

谢谢。如果我最终需要一个农场,我将有相当多的收入用于具体事务。这个想法很刺激,谢谢。我相信现在我要参加会议。这是一个低容量的网站,可能会持续一段时间。我想我知道你在说什么,但听起来好像你在内存中创建了一个类似于会话中保存它的表。我是错了还是不明白你说的话?不一定。。。这将在数据库中。假设您有一个名为Foo的对象。客户端A称之为Bar,客户端B称之为Baz,客户端C没有覆盖。当用户单击某个特定对象上的“视图”时,您将从连接到TypeTranslationTable的DB中检索详细信息,以便您知道,在您正在构建的屏幕中,有一个特定的标签,例如基于客户端的Foo、Bar或Baz。我这样做是为了状态代码,客户需要不同的名称来表示基本相同的状态。woa。以前没有听说过这个档案提供者。听起来像是这样一种情况:如果系统启动,我将构建并打算实现。看起来您启动了一个单独的配置文件数据库,并将配置文件提供程序指向它。我不希望有那么多的用户连接起来会给会话带来麻烦,但我会建立这样的系统,以便我可以在以后将我的信息存储库切换到单独的数据库中。这就是我得到的!谢谢因为它经常被用于像主导航这样的方面,所以我认为cookies可能会因为频繁访问它们而产生负面影响。