2013-03-13 49 views
0

的冲突我有它使用“过程”会话的默认的MVC3 Web应用程序。我在地方PRG模式 - 即当回发,如果我的ModelState中无效,我的模型存储在TempData的和重定向到原来的取得动作。在获取操作中,我获取模型数据(如果存在)并发送到视图。我相信这是MVC的基本方面之一。长期使用和会话/ TempData的

我知道后台TempData是一个会话变量,在PRG转换中使用 。我需要知道的是,无论是 可能有冲突或交叉refrencing - 如果我用两页的东西 喜欢的TempData [“模型”],并可同时访问的网页 。那会覆盖通用数据 的TempData [“模型”]或者是安全的,如果我使用 两个不同的页面相同TempData的名字。

它会与Session [“model”]类型的数据冲突吗?我正面临一些意外的会话数据损坏 - 可能是由于我的内部代码会重置会话数据或其他内容。会话数据可能会部分损坏吗?我的意思是Session [“data1”]可以,但Session [“data2”]不见了?

我的用户经常使用的网络应用程序很长一段时间导致会话超时。我试图为会议的ASP.Net会话状态的服务,但导致性能问题,因为我存储一些重物(通过序列化)会话。所以最后我在过程模式下恢复了原来的默认值。

PLS份额,如果你有任何类似的经验。

+1

会议总是tempermental由于时间收缩。 TempData [“model”]不应与Session [“model”]冲突,但是,TempData只能使用一次。 ViewBag允许重用。我以前不得不处理将会话的数据保存回数据库,这是令人生气的。通常最好的想法是让用户快速进出,而不是让他们在整个流程中间漫游。只是一个想法。 – IyaTaisho 2013-03-13 18:14:42

+0

你能分享一些相关的代码吗?为什么需要将数据存储在TemData中并将其传递给GET操作?您可以简单地添加模型错误并将其返回到视图... – Rafay 2013-03-13 19:19:33

+0

PRG模式是必需的,因为我不想复制下拉数据源,身份验证等代码...我的TempData使用在重定向期间是有限的到获取请求。我的代码还有其他一些可能会跟踪的事情。我只是想知道在两个并行请求的情况下TempData是否可能发生故障。 – 2013-03-14 09:10:47

回答

0

TempData的默认使用SessionState会并获得SessionState的是默认的排斥。因此,如果您执行两个并发重新请求,则必须等待其他人释放SessionState锁定。TempData不会直接干扰使用SessionState。 作为SessionState的默认使用进程内,它几乎可以随时随地无效。

你可能想看看http://brockallen.com/2012/06/11/cookie-based-tempdata-provider/