修正IEWebControls中TreeView的一处bug
2004-12-21 15:49
423 查看
状况:多台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行为。
一般情况下不会发现,但是确实存在
原因: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行为。
相关文章推荐
- 分享:Microsoft IE Webcontrols Treeview的一个bug及修正
- IE Webcontrols Treeview的一个bug及修正
- ie webControls treeview with xml 例子
- IEWebControls TreeView Sample
- 简单发布IEWebControls
- 腾讯 iweibo Java API 1.2.1 bug 修正一处
- Delphi 修正EmbeddedWEB不能使用中键滚动的bug
- IEWebControl TreeView右键菜单实例
- 关于微软的IE Web Controls 的安装和部署问题
- IEWebControl TreeView右键菜单
- 关于IEWebControls的安装及一些应用
- IEWebControls
- 修正TEmbeddedWEB不能使用中键滚动的bug
- VS的bug :Cannot convert type 'ASP.login_aspx' to 'System.Web.UI.WebControls.Login'
- 咏南中间件修正了一处BUG,调用中间件插件会报:非法访问
- IE select 控件总在div的上面显示的BUG修正
- 使用 TreeView IE Web 控件
- IEWebControls的安装
- IE Web Control (Treeview)配置
- 关于IEWebControls的安装及一些应用