我帮助开发了一个使用 ASP.NET WebForms 的相对高流量的 Web 应用程序。尽管我们对 viewstate 的使用相对较少,但我们目前确实需要它。
将更改部署到主母版时,我们经常导致当前连接的用户在下一次发出 POST 请求时收到错误。这样做的原因是存在于他们的 POST 请求中的 View 状态树不再匹配服务器期望发布的内容。由于我们是一个 Web 应用程序,因此我们的许多页面都执行 POST。
完整的错误当然是:
当然,这对我们的用户来说非常令人沮丧。目前,我们尝试:
我曾考虑使用负载平衡器亲和性来尝试强制新用户登录到新部署的版本,同时将当前登录的用户保留在旧版本上 - 但这似乎非常复杂,并且在生产中维护多个代码库并不是真正的地方我想去。
我很欣赏这项技术并不是我们真正的 friend ,但只是想知道是否有人有任何技巧或技术来缓解这个问题。
最佳答案
我做了类似的事情:我关闭了 Viewstate,并在母版页中创建了一个隐藏字段,它加密了 guid 和日期和时间。我使用这个 guid 和日期和时间来引用共享缓存中的一些值。
数据很小而且是 transient 的,不需要保存很长时间。根据容量和缓存数据可以保留多长时间,还可以查看人们“坚持”页面的时间。
有许多开源共享缓存解决方案专门针对此类角色进行了调整。
关于c# - 部署到高流量站点时缓解 View 状态控制树更改的技术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9974867/