【发布时间】:2015-03-27 00:30:16
【问题描述】:
[我在下面发布我们的问题和解决方案作为仅供参考。如果您有 Microsoft 或代表组织关于此问题的官方声明,我会将其标记为答案。否则,我下面的帖子将作为答案]。
问题:
我们采用了一个 ASP.NET 1.1 应用程序并将其转换为 ASP.Net 3.5。当我们双击页面上的某个项目,或选择该项目并单击“确定”按钮时 - 两者都会触发相同的回发功能 - 页面处理在服务器上停止并出现 Invalid ViewState 错误。
我们为调试所做的工作:这是针对驻留在公司 Intranet 上的程序。由于它是 .Net 1.1,该程序主要针对 Internet Explorer - JavaScript 不能在其他浏览器上运行。 F12 开发人员工具在 Internet Explorer 中打开 JavaScript 调试控制台。使用 Visual Studio 附加到 IIS 7.5 进程 (w3wp.exe) 允许我们查看 C# 服务器代码错误。
我们发现:网页上有一个隐藏字段,名为__EventValidation。基于使用 Visual Studio 检查服务器上的 C# 错误,我们看到 ASP.Net 正在获取该字段的值并将其解释为 ViewState 字段的值(ViewState 是包含有关页面信息的编码字符串),其中位于另一个隐藏字段中(我们可以使用 F12 开发人员工具在页面中看到这两个值)。但是 - 这些页面没有 ViewState 值 - 它在“EnableViewState = false”的代码中被特别禁用。
此页面的结构是一个包含 .aspx 的页面,除了一个包含子 url 的 iframe 之外没有其他数据,该子 url 显示带有数据的页面。
【问题讨论】:
-
您的问题很可能已经结束。将其作为问题提出,删除解决方案部分,然后添加并接受它作为答案。也许你也可以在答案中加入序言。
-
@JonP,感谢您的提醒。我编辑了另一个类似结构的问题,并将我们的解决方案作为答案发布。我认为它可以帮助读者,因为这是一个相当深奥的错误。
标签: javascript c# asp.net