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