gpt4 book ai didi

c# - 在部署到高流量站点时缓解 View 状态控制树更改的技术

转载 作者:行者123 更新时间:2023-11-30 18:00:35 25 4
gpt4 key购买 nike

我帮助开发了一个使用 ASP.NET WebForms 的相对高流量的 Web 应用程序。虽然我们对 View 状态的使用相对较少,但我们目前确实需要它。

在对主母版页进行更改时,我们经常会导致当前连接的用户在下一次发出 POST 请求时收到错误消息。原因是它们的 POST 请求中存在的 View 状态树不再匹配服务器期望发布的内容。由于我们是一个 Web 应用程序,因此我们的许多页面都执行 POST。

完整的错误当然是:

Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

自然,这让我们的用户非常沮丧。目前,我们尝试:

  1. 尽量减少对母版页的更改(至少,涉及服务器控制的更改)
  2. 在低流量时段部署

我考虑过使用负载平衡器亲和性来尝试强制新登录的用户使用新部署的版本,同时让当前登录的用户保持在旧版本上——但这看起来非常复杂,并且在生产环境中维护多个代码库不是'这不是我真正想去的地方。

我很欣赏这项技术并不是我们真正的 friend ,但只是想知道是否有人有任何提示或技术可以用来缓解这个问题。

最佳答案

我为类似的事情做了什么:我关闭了 Viewstate,并在母版页中创建了一个隐藏字段,它加密了一个 guid 以及日期和时间。我使用此 guid 以及日期和时间来引用共享缓存中的一些值。

数据很小而且是 transient 的,不需要保存很长时间。根据容量和您可以将缓存数据保留多长时间,还可以查看人们“坚持”页面的时间。

有许多专门针对此类角色进行调整的开源共享缓存解决方案。

关于c# - 在部署到高流量站点时缓解 View 状态控制树更改的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com