【问题标题】:View state errors in development but not production查看开发中的状态错误,而不是生产中的错误
【发布时间】:2017-03-17 07:23:52
【问题描述】:

我有两个或多或少相同的网站,都在同一台服务器上运行,但在不同的应用程序池下。应用程序池都配置为使用“网络服务”凭据运行。

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

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

这是我能看到的唯一区别。我对 IIS 如何在站点和应用程序池级别处理身份验证的知识相当有限。是否有特定原因导致一种设置会导致机器密钥被刷新,而另一种则不会?

【问题讨论】:

  • ViewState 取决于会话。您是否对回发之前可能使会话无效(放弃、清除)的会话进行了任何欺骗?
  • 没有。如前所述,两个站点中的代码没有区别。唯一的区别是认证方式

标签: asp.net iis


【解决方案1】:

安装 .NET 3.5 SP1 后,在 ASP.NET 页面上进行回发时,您可能会收到 Validation of viewstate MAC failed 异常。

【讨论】:

  • 网站在.net 4.0下运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多