asp.net - 该页面的状态信息无效,并且可能已损坏,现在无法工作(在 Citrix 下)

标签 asp.net exception viewstate citrix

我的一位客户刚刚报告了 ASP.Net Web 应用程序的错误。他们通过 Citrix 运行它,并且多年来一直运行良好。最近的更新不会改变与 View 状态相关的任何远程内容,但他们开始收到以下错误:

System.Web.HttpException: The state information is invalid for this page and might be corrupted.
---> System.Web.UI.ViewStateException: Invalid viewstate.
 Client IP: ...
 Port: 4191
 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
 ViewState: 822106
 Referer: http://....
 Path: /...aspx
---> System.FormatException: Invalid length for a Base-64 char array.
at System.Convert.FromBase64String(String s)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()

注意奇怪的 View 状态 - 822106。这应该看起来像/wEPDwUJLTc4OTg3Mjg4D2Q....(等等)。他们给了我一个 IP 地址,这样我就可以直接进入并进行测试(通过 VPN),一切都很顺利。然而,我在执行此操作时并没有通过 Citrix 运行它。我通过设置以下内容关闭了 View 状态:

<pages enableViewState="false" enableViewStateMac="false">

在 web.config 中,但这没有什么区别。奇怪的是,这种方法多年来一直有效。非常欢迎任何和所有建议。

最佳答案

在 .aspx 页面顶部的 @page 指令中,添加 ValidateRequest 属性并设置为 false。

不过,我只建议在 Intranet 应用程序上这样做,因为它会打开一个安全漏洞。您可以使用 EnableViewStateMac 属性以相同的方式禁用 MAC 消息。 这可能会有所帮助:

http://support.microsoft.com/en-us/kb/2915218

关于asp.net - 该页面的状态信息无效,并且可能已损坏,现在无法工作(在 Citrix 下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055399/

相关文章:

c# - 如何直接显示最近上传的视频?

c++ - 区分递归基本情况和异常

asp.net - 从母版页 asp.net 访问控件 - 存储值

asp.net - 用于在自连接表中的嵌套 <ul> 中显示无限类别树的逻辑

javascript - 在javascript中获取控件的 "id"值

ASP.NET:如何处理并行请求

Android - 崩溃报告通知

c# - "Collection was modified..."问题

asp.net - ASP.NET 页面上的不可见控件及其子控件是否会影响 View 状态?

ASP.NET 在使用 PageMethods 回发之间保留 label.text 值的最佳方法