Iframe中的回发导致Safari浏览器中出现Viewstate MAC错误

时间:2011-11-02 07:17:19

标签: c# asp.net safari iis-6

我有3个.aspx文件。例如

GrandFather.aspx, Father.aspx and Child.aspx

GrandFather.aspx页面有一个iframe,iframe的源代码是Father.aspx。表格Father.aspx,我使用

调用了Child.aspx
Resposne.Redirect("Child.aspx");

因此,使用Child.aspx更改了iframe内容。现在,Child.aspx有一些在回发中提交的表单数据。浏览器IE,FireFox,谷歌Chrome已经正常工作,但在Safari中,它显示以下错误,

System.Web.HttpException: A field validation of viewstate MAC. If a Web Farm 
or cluster is hosted by this application, please check that you have to specify 
the configuration is the same validationKey and validation algorithm <machineKey>.
AutoGenerate can not be used in the cluster.

这个问题背后的原因是什么?我该如何解决?

我已检查过iframe的来源,即使在Response.Redirect之后它也始终显示为Father.aspx。

我使用的是.NET 2.0,IIS是6.0。

编辑:

首次回发时,Safari浏览器显示错误。但是,对于下一次尝试,错误就会消失。

1 个答案:

答案 0 :(得分:0)

我的公司最近遇到了Safari + IFrame + Cookies的问题 基本上,Safari第一次加载Iframe时不接受任何cookie。这当然会导致各种破坏,导致所有身份验证和会话无法正常工作。

Here is a related question that has to deal with Same-Origin-Policy
它表示,一旦用户与Iframe页面进行交互,Safari就会表现出来。他们提出了一种解决方法,即使用JavaScript POST一个空表单,Safari实际上认为这是“用户交互”。页面刷新后,Safari将在此后正常运行。

我们的解决方案是简单地为Safari用户突破iframe。这不是一个理想的解决方案,但我们真的需要它们。