【发布时间】:2020-03-10 10:04:04
【问题描述】:
我有一个页面同时请求多个请求。所以这些请求在同一个会话中。为了访问我在任何地方都使用的会话IHttpContextAccessor。
我的问题是,无论时间如何,一些请求都没有看到其他请求已经设置了会话状态,而是看到了一些先前的状态。 (再次在时间上,设置状态操作已经发生了,仍然)
据我所知,每个请求都有自己的状态副本,该副本被写回......(以及“何时”?)到常见的“一个”状态。如果这个“何时”是延迟到请求完全服务的时间,那么我遇到的情况很容易发生:会话中的第二个并发请求在第一个请求修改状态之后但在它完全完成之前得到了他的副本。
但是,以上所有这些都意味着,如果在会话中提供并发请求,则无法保持会话完整性。第二个没有看到第一个已经完成的更改,将写回与已经完成的第一个过程更改不一致的内容。
我错过了什么吗? 有什么解决方法吗? (当然需要一些费用)
【问题讨论】:
-
为什么你需要一个请求应该能够“看到”另一个请求?您是否托管一个应用程序实例?
-
没有必要见面。但是,所有请求都会在必须保持一致的公共状态下进行更改。请求不会在 Web 服务器中序列化(谢天谢地),因此这种更改是同时发生的,并且不依赖于真实的当前状态会导致状态不一致
-
...据我所知,会话状态的整个实现概念是假设会话中的请求是序列化的,这在异步服务器架构中没有意义
-
如何在会话中存储共享状态?
标签: asp.net-core session-state