无效的Viewstate或防火墙或代理截断的Viewstate

本文关键字:Viewstate 防火墙 无效 代理 | 更新日期: 2023-09-27 18:00:06

我们在产品环境中遇到了很多这样的错误,这些错误在我们的asp.net webforms应用程序的DEV上是不可复制的:

输入不是有效的Base-64字符串,因为它包含非Base-64字符,两个以上的填充字符,或填充中的一个非空白字符字符。

在System.Convert.FromBase64String(字符串s)
位于System.Web.UI.ObjectStateFormatter.Deserialize(字符串输入字符串)
位于System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Descialize(字符串序列化状态)
位于System.Web.UI.Util.DescerializeWithAssert(IStateFormatter格式化程序,String serializedState)
位于System.Web.UI.HiddenFieldPageStatePersister.Load()
错误WTAS-ADM01 global_asax Application_Error App_global.asax

出现未处理的应用程序错误:无效的视图状态。

我对这些错误进行了快速研究,发现它们背后最可能的原因是页面上的Viewstate被某些防火墙或代理截断。但我不确定这些事情是否真的是原因。

有人能指导我如何在我的DEV环境中复制这个吗。所以,至少我可以更加确信这些人真的是罪魁祸首。

无效的Viewstate或防火墙或代理截断的Viewstate

很难重现防火墙/代理如何处理您的请求。

更简单的方法是在服务器端持久化视图状态以进行测试;如果它能在你的开发框和prod中工作,你就会知道它实际上是关于那些截断你的Viewstate的东西。