我有两个或多或少相同的网站,它们都在同一台服务器上运行,但在不同的应用程序池下运行。应用程序池都配置为使用“NETWORK SERVICE”凭据运行。
在一个网站上 - 将其称为开发副本,我收到臭名昭着的“验证视图状态MAC失败”错误。在页面空闲20分钟后发生回发时会发生这种情况。我被告知这是因为我没有在web.config或机器配置文件中指定机器密钥。手动回收应用程序池会按预期重现错误。所以我的问题不是关于如何阻止这个问题,而是我想知道为什么错误发生在开发但不是生产。两个站点的设置之间的唯一区别是身份验证方法。
在IIS配置的“基本设置”部分中,站点的开发版本设置为使用服务帐户进行连接,而生产版本使用“应用程序用户”(通过身份验证)。在身份验证设置下,两个页面都配置了模拟和Windows身份验证。
这是我能看到的唯一区别。我对IIS如何处理站点和应用程序池级别的身份验证的了解相当有限。是否有一个特定的原因,为什么一个设置应该导致机器密钥刷新但另一个没有?
答案 0 :(得分:0)
安装.NET 3.5 SP1后,您可能会在ASP.NET页面上进行回发时验证viewstate MAC失败的异常。