修正IEWebControls中TreeView的一处bug - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 修正IEWebControls中TreeView的一处bug (http://www.webasp.net/article/16/15696.htm) |
| -- 作者:未知 -- 发布日期: 2004-12-23 |
| 状况:多台Web服务器作负载平衡时,如果将XML字符串流作为数据源赋给TreeView,速度将很慢。
一般情况下不会发现,但是确实存在 原因:TreeView和TreeNode数据绑定时是先将传入的XML当作URL处理,出错后才当作XML流。而在多台服务器的情况下由于页面在那台机器是不确定的,也就是说其URL不确定,是由负载平衡机制实时定向到某台服务器的。 修正方法: 增加一属性TreeNodeSrcIsXmlStream设置XML是否为字符串流。 修改方法ReadXmlSrc 说明:先根据属性来判断是否为XML,而不是用异常处理来判断 完善点则再增加一方法IsXml在取属性时调用,如果属性为空则用此方法判断TreeNodeSrc的类型 功能:判断字符串是否为XML 参数:string str 要判断的字符串 源码: try { reader = GetXmlReaderFromUri(TreeNodeSrc, TreeNodeXsltSrc); bReading = reader.Read(); } catch { // couldn't read. Try TreeNodeSrc as a string. reader = GetXmlReaderFromString(TreeNodeSrc, TreeNodeXsltSrc); if (reader != null) bReading = reader.Read(); } 改为: if(TreeNodeSrcIsXmlStream) { reader = GetXmlReaderFromString(TreeNodeSrc, TreeNodeXsltSrc); if (reader != null) bReading = reader.Read(); } else { reader = GetXmlReaderFromUri(TreeNodeSrc, TreeNodeXsltSrc); bReading = reader.Read(); } htc中可能也存在,没看代码,要改的话原理一样。 结论: 用try...catch...这种异常处理机制来进行条件判断是不好d行为。 |
| webasp.net |