ASP.NET验证视图状态MAC失败 - IIS已回收

时间:2013-06-14 21:59:46

标签: .net iis

我在很多帖子中都看到了这个问题。在我的asp.net站点中,我跟踪使用在Global.asax文件中使用Application_Error方法填充的日志发生的任何错误。

ASP.NET验证viewstate MAC失败是一个经常发生的错误。我猜,这是在IIS回收我的应用程序后发生的。

我见过很多帖子说在web.config中添加一个机器静态键可以解决这个问题。

我的问题是:添加机器静态密钥的确切做什么?

1 个答案:

答案 0 :(得分:3)

计算机静态密钥仅适用于Web Farm方案。浏览器上的密钥必须与服务器上的密钥匹配,以避免此错误。

当客户访问Web场中的站点时,他们可能会在服务器A上启动并将该密钥存储在客户端,但是在回发时会遇到服务器B.在这种情况下,服务器B会拒绝,除非两个服务器A和服务器B配置有相同的密钥。

在您的情况下,随着应用池的回收,这不是一个潜在的解决方案。

与您一样,我们的团队有一个中央错误记录系统,我们在global.asax中使用全局错误处理程序。我们可以使用Web界面查看错误。

我们遇到了类似的问题 - 我们也会收到这些错误,还有其他一些不值得注意的问题,但无论如何都要记录。

我们只是针对我们希望忽略的某些已知错误以不同方式记录错误。 (不会导致完全失败的偶发超时问题等)我们的全局错误日志记录系统中存在严重级别,并将这些级别记录为SeverityLevel.KnownIssue或SeverityLevel.Informational。我们的网络界面只是过滤掉这些内容,因此我们在主要审核屏幕上看不到它们,但如果我们需要深入了解并获取这些数据的统计数据,我们就可以轻松获取数据。