2013-03-21 65 views
1

我有两个或多或少完全相同的网站,它们都运行在同一台服务器上,但在不同的应用程序池下运行。应用程序池都配置为使用“NETWORK SERVICE”凭据运行。查看开发中的状态错误但不生产

在一个网站上 - 这称之为发展副本,我收到了臭名昭著的“视图状态MAC验证失败”错误。当页面空闲20分钟后发生回发时会发生这种情况。我被告知这是因为我没有在web.config或机器配置文件中指定机器密钥。按预期方式手动回收应用程序池会重现错误。所以我的问题不是关于如何制止这个问题,而是我想知道为什么错误发生在dev而不是生产中。两个站点的设置唯一的区别是身份验证方法。

在IIS配置的“基本设置”部分中,该网站的开发版本被设定使用服务帐户连接,同时生产版本使用“应用程序用户”(通过验证)。在身份验证设置下,这两个页面都配置了模拟和Windows身份验证。

这是我能看到的唯一区别。我对IIS如何在网站和应用程序池级别处理身份验证的知识相当有限。是否有一个特定的原因,为什么一个设置应该导致机器键被刷新,但另一个没有?

+0

ViewState依赖于一个会话。您是否在进行会话之前进行任何欺骗手段,以便在回发之前使会话失效(放弃,清除)会话? – JDPeckham 2013-03-21 16:01:46

+0

不可以。如前所述,这两个网站的代码没有区别。唯一的区别是验证方法 – Trent 2013-03-21 22:22:10

回答

0

安装.NET 3.5 SP1后,您可能会在ASP.NET页面做回发时的视图状态MAC验证失败例外。

+0

这些站点运行在.net 4.0 – Trent 2013-03-21 22:22:28