我似乎偶尔会在ASP.NET应用程序的事件查看器中获得"无效的视图状态" .
他们中的大多数(95%)似乎是引用ScriptResource.axd
(该应用程序使用ASP.NET AJAX库).我无法删除Ajax库,因为到处都使用Ajax.
如何减少这些错误?我每天得到约100-200个错误,我不知道如何修复它们!它们来自不同的浏览器,不同的IP和地理位置.
我很难重现这个问题,因为它几乎没有发生在我身上,它只发生在我身上3-4次.
错误:
Process information: Process ID: 4004 Process name: w3wp.exe Account name: NT AUTHORITY\NETWORK SERVICE Exception information: Exception type: HttpException Exception message: Invalid viewstate. Request information: Request URL: http://domainnamehere/ScriptResource.axd?d=W1R6x9VzZ2C9SKnIkOmX9VRLhSjJ3nOF1GSQvPwKS3html Request path: /ScriptResource.axd User host address: 124.177.170.75 User: Is authenticated: False Authentication Type: Thread account name: NT AUTHORITY\NETWORK SERVICE Thread information: Thread ID: 1 Thread account name: NT AUTHORITY\NETWORK SERVICE Is impersonating: False Stack trace: at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s) at System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection queryString) at System.Web.Handlers.ScriptResourceHandler.ProcessRequestInternal(HttpResponse response, NameValueCollection queryString, VirtualFileReader fileReader) at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) at System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Custom event details: For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
我也经常在我的.NET代码中得到这个错误,这个错误可能与此相关:
Exception raised in GLOBAL.ASAX.Application_Error(): 'Padding is invalid and cannot be removed.' at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
Jim Petkus.. 36
这似乎与许多人一直在经历的IE8问题相同.似乎发生的事情是,IE8(在IE8渲染模式和IE7兼容模式下)将以某种方式从HTML文档中间丢失4096个字节,这个缺失的数据会导致此异常(您通常会在ScriptResource或WebResource调用中看到这一点) .
以下是有关此问题的Microsoft错误报告:https: //connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeededID = 4349997
此问题还有很多论坛,博客等帖子:
生成的Webresource.axd参数无效
IE 8丢弃内存页面?
http://forums.asp.net/t/1373410.aspx?PageIndex=1
http://forums.asp.net/p/1409964/3085329.aspx
Microsoft已对此问题做出回应:
注意是Internet Explorer 8中的错误.Internet Explorer团队一直在调查此问题.
影响:到目前为止,我们认为该问题对最终用户使用Web应用程序的体验没有影响; 唯一的负面影响是JavaScript推测下载引擎发送的虚假/格式错误的请求.当解析器实际需要脚本时,它将在那时正确下载和使用.
情况:只有在文档中出现包含带有CHARSET指令的Content-Type的META HTTP-EQUIV标记时,并且仅当JavaScript SRC URL跨越第4096个字节时,才会在某些时序情况下发生虚假请求. HTTP响应正文.
解决方法:因此,我们目前认为可以通过使用HTTP Content-Type标头声明页面的CHARSET而不是在页面中指定它来减轻此问题.
所以,而不是放
相反,在头标记中,发送以下HTTP响应标头:
Content-Type: text/html; charset=utf-8
请注意,HTTP标头中的charset规范可以提高所有浏览器的性能,因为浏览器的解析器在遇到字符集声明时无需从头开始重新解析.此外,使用HTTP标头有助于缓解某些XSS攻击媒介.
注意:有报告称,当页面上没有META HTTP-EQUIV时,仍会出现此问题.当我们进行更多调查时,我们会更新此评论.
微软于2009年6月30日下午12:25发布.
编辑:我偶尔会看到这个异常,但是这个错误被报告为修复:http: //blogs.msdn.com/b/ieinternals/archive/2010/04/01/ie8-lookahead-downloader-fixed.aspx
这似乎与许多人一直在经历的IE8问题相同.似乎发生的事情是,IE8(在IE8渲染模式和IE7兼容模式下)将以某种方式从HTML文档中间丢失4096个字节,这个缺失的数据会导致此异常(您通常会在ScriptResource或WebResource调用中看到这一点) .
以下是有关此问题的Microsoft错误报告:https: //connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeededID = 4349997
此问题还有很多论坛,博客等帖子:
生成的Webresource.axd参数无效
IE 8丢弃内存页面?
http://forums.asp.net/t/1373410.aspx?PageIndex=1
http://forums.asp.net/p/1409964/3085329.aspx
Microsoft已对此问题做出回应:
注意是Internet Explorer 8中的错误.Internet Explorer团队一直在调查此问题.
影响:到目前为止,我们认为该问题对最终用户使用Web应用程序的体验没有影响; 唯一的负面影响是JavaScript推测下载引擎发送的虚假/格式错误的请求.当解析器实际需要脚本时,它将在那时正确下载和使用.
情况:只有在文档中出现包含带有CHARSET指令的Content-Type的META HTTP-EQUIV标记时,并且仅当JavaScript SRC URL跨越第4096个字节时,才会在某些时序情况下发生虚假请求. HTTP响应正文.
解决方法:因此,我们目前认为可以通过使用HTTP Content-Type标头声明页面的CHARSET而不是在页面中指定它来减轻此问题.
所以,而不是放
相反,在头标记中,发送以下HTTP响应标头:
Content-Type: text/html; charset=utf-8
请注意,HTTP标头中的charset规范可以提高所有浏览器的性能,因为浏览器的解析器在遇到字符集声明时无需从头开始重新解析.此外,使用HTTP标头有助于缓解某些XSS攻击媒介.
注意:有报告称,当页面上没有META HTTP-EQUIV时,仍会出现此问题.当我们进行更多调查时,我们会更新此评论.
微软于2009年6月30日下午12:25发布.
编辑:我偶尔会看到这个异常,但是这个错误被报告为修复:http: //blogs.msdn.com/b/ieinternals/archive/2010/04/01/ie8-lookahead-downloader-fixed.aspx