当前位置:  开发笔记 > 编程语言 > 正文

.NET应用程序中的不稳定无效Viewstate问题

如何解决《.NET应用程序中的不稳定无效Viewstate问题》经验,为你挑选了1个好方法。

我似乎偶尔会在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



1> Jim Petkus..:

这似乎与许多人一直在经历的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

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有