gpt4 book ai didi

asp.net - 当客户端通过每个请求通过多个 IP 连接时,ViewState 解码失败

转载 作者:行者123 更新时间:2023-12-01 13:09:22 25 4
gpt4 key购买 nike

我们的网站有一个半奇怪的问题。

一致地,从 1 个匿名*用户发生以下错误:

Exception type: System.FormatException

Exception message: Invalid length fora Base-64 char array.

经过一些调查,用户似乎正在使用某种形式的负载平衡防火墙,因为 IIS 日志显示请求来自 2 个不同(但连续)的 IP。

据我所知,禁用“ViewStateMAC”应该可以解决这个问题。

不过我不确定,而且没有任何办法与用户进行测试,我有点不愿意继续这样做。

有没有人遇到过类似的问题?你是如何对待他们的?

服务器详细信息:

从单个 IP 运行的单个服务器 (Win2003)。

更新:

据我所知,ViewStateMAC 仅适用于服务器端。我的问题是由于客户回发了具有多个 IP 的单个页面。

* 但来自 IIS 日志中确定的相同 2 个 IP。用户也没有恶意。

最佳答案

嘿 - 我们在应用程序上看到异常数量的这些错误 - 由于客户要求和缺乏这些方面的指导 - 在每个页面上使用过多的控件,特别是 GridViews。

明显的罪魁祸首是 View 状态的长度,在某些极端情况下,它的长度为 +50k 个字符。由于这是一个仅由一组有限用户使用的管理应用程序,我们最初通过使用这篇优秀的(你有点过时的)文章中概述的解决方案的改编版本将 View 状态移动到 session 中来完全解决这个问题: http://msdn.microsoft.com/en-us/magazine/cc163577.aspx然而,这给我们带来了使用后退按钮和/或标签式浏览的问题。

接下来我们添加了一些额外的日志记录代码 - 并确认问题确实正是错误所说的 - base-64 编码字符串的长度必须可以被 4 整除 - 当我们得到这个错误时从来没有案件。假设是某些代理和/或防火墙,我们只是在某个时候切断了 View 状态字符串。然后,我们使用 ASP.NET 的 ViewStateChunking 将该字段拆分为多个隐藏字段 - 我们仍在监视此解决方案。

但是 - 我最近在具有有效长度的 View 状态字段上遇到错误 - 但是 __EVENTVALIDATION 字段长度在此无效。

在发生这种情况的页面上,我们的字段中有“+”号(电话代码)——我目前正在调查这一切是否可能是由原始字符串的无效编码引起的(因为 + 号有一个特殊的符号)以 base-64 编码的字符串表示)。

关于asp.net - 当客户端通过每个请求通过多个 IP 连接时,ViewState 解码失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343153/

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