修正IEWebControls中TreeView的一处bug

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

状况:多台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行为。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航