随笔 - 547  文章 - 213 评论 - 417 阅读 - 107万

  A script on this page is causing Internet Explorer to run slowly. If it continues to run, your computer may become unresponsive

[问题描述]

包含ajax的页面中,调用数据层的方法更新数据库,其中一个字段的内容比较长,10万多字.

 存取过程用了HtmlEncode和HtmlDecode.

 现在的问题是:

 1. 当输入普通字符时,输入10万多或者20万多,运行正常.

 2. 从word中拷贝带有";/SPAN></P><P class=MsoNormal"等特殊字符,特殊格式的段落,html代码,javascript代码,web.config文件的配置节时:

 (a) 当字数较少(大概1万字)的时候,运行正常.

 (b) 当字数较多(超过5万)的时候,就会弹出如下错误提示:

    

 弹出错误提示后,网页功能就失效了,再点页面上的按钮都没反应了.

 我跟踪了一下,发现错误对话框的弹出是在服务器端代码执行完毕,而ajax的EndRequest事件还未触发的期间内弹出的.

 我试验了以下的方法

 1. Server.ScriptTimeout = 20.不行.

 2. 同时修改 Server.ScriptTimeout 和 web.config中的executionTimeout为较小的值.不行.

 3. 不用HtmlEncode和HtmlDecode,还是不行.

 

 这到底是怎么回事哪?该怎么解决那?

 不要告诉我不要输入那些字符哦,那些都是必须输入的.呵呵.

 请指教,谢谢

 

[解决方法]

自己搞定:

原来当一个div内的数据非常多的时候,当通过页面上的控件将div的值改变的时候,就会运行很慢或者出现这个提示。

所以我的处理方法是:

在触发这个div改变的控件开始发生Request的时候,首先将div的值清空或者设置成很简单的值,比如 ”Processing…”, 然后在请求结束的时候再将值赋回来。

这个通过ajax的PageRequestManager的InitializeRequest和EndRequest非常容易实现。

posted on   今夜太冷  阅读(1194)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示