我们在.NET 3.5 SP1上运行。
最近,在IE中,我们的一些用户开始偶尔收到“内存不足”的错误。这种情况并不总是发生。我设法将它复制了几次,我发现这段来自控制文件的代码导致了无限循环: AjaxControlToolkit.TextBoxWrapper.registerClass('AjaxControlToolkit.TextBoxWrapper',Sys.UI.Behavior);AjaxControlToolkit.TextBoxWrapper.validatorGetValue = control.AjaxControlToolkitTextBoxWrapper.get_Value();} (Id){ var AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue(id);} = AjaxControlToolkit.Common.Common.js (Id);if(AjaxControlToolkit.Common.Common.js && control.AjaxControlToolkitTextBoxWrapper) { return control.AjaxControlToolkitTextBoxWrapper.get_Value();} return AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue(id);}
最后一行(调用_originalValidatorGetValue)基本上一遍又一遍地回调这个函数,因为control.AjaxControlToolkitTextBoxWrapper是未定义的。
上面定义的函数是AjaxControlToolkit.TextBoxWrapper.get_Wrapper(control),如果它不存在,它可以用来创建包装器,但如果我是唯一一个在野外看到这个bug的人,我不会有想要改变框架的感觉。
错误并不总是发生。当加载的第一个URL包含AJAX历史点时,似乎就会发生这种情况。如果您打开一个页面并使用它,导致添加了历史点,那么它工作得很好。但是,如果您将URL复制粘贴到另一个浏览器窗口中,则会出现此问题。
因此,我的猜测是我在历史控件上做了一些错误的事情,没有正确地设置包装器。即便如此,这里面似乎有一个无限循环。
有什么想法/线索吗?
我在Microsoft Connect上填写了一份错误报告。在填写它并测试各种场景时,我注意到它在本地运行良好,但不是远程运行。比较我的生产/开发环境,我注意到CombineScripts在本地是错误的。将其部署到我的生产服务器上似乎已经解决了这个问题。
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=373171
发布于 2008-10-04 08:15:28
你可能想在Microsoft Connect上发布一个错误报告。
发布于 2010-09-03 09:41:22
如果从ScriptManager中删除LoadScriptsBeforeUI='false‘,这个问题就解决了。
https://stackoverflow.com/questions/170483
复制相似问题