新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > Web开发 > Asp教程 > 正文:修正IEWebControls中TreeView的一处bug

修正IEWebControls中TreeView的一处bug

新客网 XKER.COM 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行为。


收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐