2013-03-19 116 views
0

我有一个ASP.NET(4.0)webforms应用程序,我想知道在我的web应用程序中用户之间共享数据时我有什么选项。在没有数据库表的情况下在用户之间共享数据

最明显的解决方案是数据库表。但是有没有其他的选择?我已经阅读了一些关于“应用程序范围”的内容,但我不确定它对于这种情况是否有用。

+0

为什么你不希望使用一个数据库?通过它的声音,它正是你应该使用的。 – Servy 2013-03-19 14:27:42

+0

@Servy数据库目前有大约300个表,所以我想以另一种方式解决它 - 如果可能的话。 – Johan 2013-03-19 14:28:42

+1

如果应用程序的复杂程度很高,那么这个信息属于一个更重要的原因,而不是几乎任何其他选项。如果这是一个hello world应用程序,并且你不会为学习如何配置数据库而烦恼,那么我会考虑其他任何事情的唯一原因是,但这显然不是这种情况。听起来就像你只需要花费一些时间来适当地构建数据库,可能使用模式或甚至多个数据库实例来隔离(并因此模块化)数据以使其更容易处理。 – Servy 2013-03-19 14:31:07

回答

1

应用程序是您正在寻找的。

if (Application["CurrentUsers"] == null) 
    Application["CurrentUsers"] = 0; 
Application["CurrentUsers"] += 1; 

为当前在线计数器只是一个例子。

反应的一生,看到global.asax

protected void Application_Start(object sender, EventArgs e) 
{ 
    Application["CurrentUsers"] = 0; 
} 
protected void Application_End(object sender, EventArgs e) 
{ 
    Application["CurrentUsers"] = null; 
} 
+0

好吧,但应用程序对象会存活多久? – Johan 2013-03-19 14:27:07

+1

@Johan查看http://msdn.microsoft.com/en-us/library/ms178594(v=vs.100).aspx – Maarten 2013-03-19 14:28:21

+0

只要你的应用程序还活着。因此,每当**所有**会话被放弃时,应用程序也会丢失。例如,如果您重新启动您的IIS。 – 2013-03-19 14:28:22

1

应用对象或将其存储在内存数据库

+0

应用程序对象是否在某个时候自动清除? – Johan 2013-03-19 14:27:48

+0

直到工作进程没有被回收或者你需要清除它。 – TalentTuner 2013-03-19 14:29:27

+0

当应用程序池被回收或在IIS上重新启动应用程序时会发生这种情况。它也发生在web.config发生变化时。您可以通过global.asax中的Application_Start和Application_End钩住应用程序事件 – 2013-03-19 14:31:32