不等不靠,自己动手解决专题调用“串台”问题。
被酷源的“专题”功能折腾了很长时间。
一开始是调用的时候出错,经过官方指点,发现是专题内容标签与其他一些标签有冲突,消除冲突后终于显示出内容。
后来又发现调出的内容似乎比期望的多出来许多。经过仔细观察,发现是程序bug导致筛选条件出了问题。简单地说,当调用spid=5专题的时候,不仅调出了=5的内容,同时还调出了=15,25,35...51,52,53...等所有包含"5"的内容,就像听收音机的时候串进来了别的电台一样。
发现这一线索后,上周就反馈给了官方。本来以为如此直接的线索,程序员马上就可以想到出错的具体语句并随手给解决了的,结果一直等到昨天也没结果,经询问是“最近接了两个政府定制的项目,有些忙”。没办法,看来只好自己动手了。
虽然官方不愿意公开.dll文件的源码,但对于C#编译出来的那些东西似乎并没有什么秘密可言(给官方一点面子,不在这论坛讨论反编译问题)。打开ky.bll.dll对应的源代码之后,按照已发现的线索,很快就找到了出问题的地方:
如B_Create.cs第1744行:
string specialIdStr = string.Format(" (i.[specialidstr] like '%{0}%' ", id);另外还有1751,6628,6636共4处。将其中的
'%{0}%' 全部改为
'%|{0}|%' ,重新编译,问题解决!
酷源的专题字段(specialIdStr)是按这样的方式保存的: |spid1|spid2|spid3|....|。将检索条件从spid=5修改为spid=|5|,排除了检索到其他"5"的可能性,“串台”问题圆满解决!
说心里话,酷源最近的进度慢了许多,0305发布的开源版相对于0104版几乎没有什么变化,已经报告的bug多数还是一目了然地摆在那里。专题“串台”的问题,本来已经将详细的线索报告给了官方,得到的回答竟然是“技术员说应该不可能(有错误)的”!
以前没玩过C#,如果不是酷源,或许暂时还不会玩这个。自己动手,实在是因为等不起了。
编译出来的文件比官方原来的小了不少(240K/260K),不知道什么原因。经简单测试,没发现异常。如果有需要的,可下载试用一下,记得自己先保存好原来的文件。