【发布时间】:2017-03-17 07:23:52
【问题描述】:
我有两个或多或少相同的网站,都在同一台服务器上运行,但在不同的应用程序池下。应用程序池都配置为使用“网络服务”凭据运行。
在一个网站上 - 将此称为开发副本,我收到臭名昭著的“视图状态 MAC 验证失败”错误。当页面空闲 20 分钟后发生回发时,就会发生这种情况。我被告知这是因为我没有在 web.config 或机器配置文件中指定机器密钥。手动回收应用程序池会按预期重现错误。所以我的问题不是关于如何停止这个问题,而是我想知道为什么错误发生在开发而不是生产中。两个站点设置的唯一区别是身份验证方法。
在 IIS 配置的“基本设置”部分,站点的开发版本设置为使用服务帐户连接,而生产版本使用“应用程序用户”(通过身份验证)。在身份验证设置下,两个页面都配置了模拟和 Windows 身份验证。
这是我能看到的唯一区别。我对 IIS 如何在站点和应用程序池级别处理身份验证的知识相当有限。是否有特定原因导致一种设置会导致机器密钥被刷新,而另一种则不会?
【问题讨论】:
-
ViewState 取决于会话。您是否对回发之前可能使会话无效(放弃、清除)的会话进行了任何欺骗?
-
没有。如前所述,两个站点中的代码没有区别。唯一的区别是认证方式