我在很多帖子中都看到过这个问题。在我的 asp.net 站点中,我使用使用 Global.asax 文件中的 Application_Error 方法填充的日志来跟踪发生的任何错误。
ASP.NET 验证视图状态 MAC 失败是一个经常发生的错误。我的猜测是,这发生在 IIS 回收我的应用程序之后。
我看过很多帖子说在 web.config 中添加机器静态密钥可以解决这个问题。
我的问题是:添加机器静态密钥到底有什么作用?
机器静态密钥仅适用于Web Farm方案。浏览器上的密钥必须与服务器上的密钥匹配,以避免出现此错误。
当客户访问网络场上的站点时,他们可能从服务器 A 开始并将该密钥存储在客户端,但在回发时会访问服务器 B。在这种情况下,服务器 B 会拒绝,除非服务器 A 和服务器都B 配置了相同的密钥。
在您的情况下,通过应用程序池回收,这不是一个潜在的解决方案。
和你一样,我们的团队有一个中央错误记录系统,我们在 global.asax 中使用一个全局错误处理程序。我们有一个 Web 界面,我们可以使用它来查看错误。
我们有一个类似的问题——我们也遇到了这些错误,还有其他一些并不真正值得注意的错误,但无论如何它们都会被记录下来。
对于我们希望忽略的某些已知错误,我们只是以不同的方式记录错误。(不会导致完全失败的零星超时问题等。)我们在全局错误日志系统中有一个严重级别,这些日志记录为 SeverityLevel.KnownIssue 或 SeverityLevel.Informational。我们的 Web 界面只是将这些过滤掉,因此我们不会在主评论屏幕上看到它们,但如果我们需要深入了解这些数据并获得统计数据,我们可以方便地使用数据。