我在哪里可以将共享数据存储在ASP MVC网站上?

问题描述:

我正在使用C#编写一个ASP MVC项目。我在哪里可以将共享数据存储在ASP MVC网站上?

我的问题基本上是哪里是最好的地方来存储一些数据,你在你的网站上给定的部分,例如说,处理用户登录到网站的方法,然后你想访问网站的其他部分的数据,说你的模型层的类。

假设数据只是一个字符串列表,有什么更好的,将它作为列表存储或用类包装列表?

谢谢。

这取决于您需要多长时间才能获得数据。

  1. 你可以在控制器

  2. 上使用TempData如果你只是想(又名下一次该网站将消失在用户登录它来存储每个会话建立一个请求的情况下)你可以使用Session

  3. 如果你想永远保持它,那么你将需要使用某种脱机存储,比如数据库或某种类型的文件。

祝你好运。

+0

非常清楚这个数据的范围(请求与会话),然后按照shenku的建议。我唯一的补充是在内存缓存中考虑如memcached,redis或appfabric,如果你想在服务器之间共享东西。 – hoserdude 2012-02-24 00:06:30

我认为类似的问题被问过这里的URL Session variables in ASP.NET MVC 你可能把它们存储在一个会话

这是为了保存一些数据,你在一个给定 部分最好的地方你网站,例如说,处理用户登录到网站的方法,然后你想在网站的其他部分访问那个数据 ,比如你的模型 层的类。

数据库是存储此类信息的绝佳选择。或者一个cookie,如果它是用户特定的,并且你不需要它持续很长时间。或者服务器上的文件。或者在云端。或者在C++非托管Win32函数中编写一个P/Invoke包装器,该函数将数据存储在公司的Intranet FTP服务器上。你拥有的可能性接近无限。选一个你感觉最舒服的。

而且我明确地提出而不是建议您使用会话与其他人可能会建议您相反。

+0

有时会话根本无法“合理”避免。我唯一使用它的地方是如果用户试图提交一些数据(例如表单),但没有登录,所以我需要重新指向注册/登录页面,然后再次显示预填充数据重定向。唯一的选择是在数据库中存储“临时”数据(例如保存,取出,删除),这是过度杀伤。 – RPM1984 2012-02-23 23:02:01

+0

@ RPM1984,当然总是可以避免一个会话。我总是避免它。就你所描述的场景而言,有很多其他方法可以实现它,例如cookies,HTML 5 sessionStorage,... – 2012-02-23 23:05:11

+0

我想我可以使用cookies,但它仍然是“会话”,尽管客户端-侧。至于HTML5 dom存储,这将如何工作?我如何从窗体获取表单数据到注册页面,然后再返回?记住,它是一个POST,然后是GET(重定向到登录页面),然后是POST(登录),然后是另一个GET(回到原始页面)。加上一个饼干,你必须明确地销毁它(或者让它悬挂)。至少使用TempData它会在读取后自动删除。无论如何,我们可以一整天都去。我知道你的感觉。 :) – RPM1984 2012-02-23 23:15:13

恩,请原谅我的无知,但不能将它存储在数据库中吗?

你是什么意思的“共享”?由谁共享,通过不同的页面,但同一用户?还是由不同的用户?

如果后者 - > DB。

如果前者为TempData,或者如果您在谈论“身份验证”数据,则将其存储在表单身份验证票证中(假设为表单身份验证)。