验证视图状态 MAC 失败的解决办法 “/”应用程序中的服务器错误。
昨天用户反应系统中有问题,问题就在于翻页的时候,系统会报以下错误。但是我们的系统已经上线1年多了,从来没出现过错误,怎么会出现错误呢?
于是开始检测,查找原因。
1. 出错提示
“/”应用程序中的服务器错误。
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey>
配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
源错误:
没有行。
如图
2.可能原因
1) ASP.Net的 runat='server' 会对ViewStat进行MAC的加密,使得提交数据时只能对同一页面进行。
2) Cookie超时
3) 错误三的原因可能是代码写错了,即把数据不是提交给本页,而是提交给了其他页面,如下:
<body>
<form >
执行之后,系统显示的错误信息如下:
路径中具有非法字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentException: 路径中具有非法字符。
最终修改成了
<body>
<form >
就解决了问题。把数据提交给了本页面,而不是其他页面。
所以很多时候,是由于自己写代码的时候不当心造成的。