在Safari中验证viewstate MAC失败

时间:2009-05-28 14:07:48

标签: asp.net safari viewstate

我有一个使用表单身份验证的Web应用程序。当我执行以下步骤时

  1. 让登录Cookie过期
  2. 单击需要登录用户的链接
  3. 用户被重定向到登录页面
  4. 点击浏览器后退按钮
  5. 用户再次被重定向到登录页面
  6. 使用有效的用户名/密码登录
  7. 我得到了这个例外 验证视图状态MAC失败。如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法。无法在群集中使用AutoGenerate。

    此案例仅出现在safari(windows和mac)中。 safari和其他浏览器之间的根本区别在于,当我们在步骤4中单击后退按钮时,safari会再次显示登录页面,而其他浏览器会显示用户正在处理的上一页。

    请在这方面提供帮助

2 个答案:

答案 0 :(得分:1)

从Safari v 5.1.4开始,我们遇到了类似的viewstate问题。

我们的问题是由于我们在window.onload事件期间提交了一个表单然后重定向到新页面而引起的。提交第二页时,我们会得到您正在报告的情况。

我们确定,当我们提交导致验证错误的第二页时,safari 5.1.4和5.1.5正在发送上一页的视图状态

在此主题ASP.NET Viewstate with Safari 5.x

中查看我的回复

答案 1 :(得分:0)

虽然我在日志中看到错误让我相信我遇到了与您相同的问题,但我还没有能够在示例应用程序中重现该错误。我的猜测是,超时页面中的视图状态信息被提交到登录页面,这是无效的。要纠正这个问题,可以在登录页面生命周期的早期(可能是Page_Init)放置一些东西,这些东西可以识别重定向到登录页面的时间(可能是通过引用程序)并绕过视图状态验证。