好久没有在Blog上写文章了,最近好忙啊,加班加的人郁闷之极。这几天碰到一个棘手的问题,就是在对Rtf格式的文件转换成Html格式的文件的时候出现了一些莫名奇妙的错误。具体的情况是这样的:Delphi写的应用程序客户端调用WebService的一个方法。这个WebService是在.net环境下提供的,IIS作为载体。在WebService中调用一个COM,该COM又调用一个实现了Rtf2Html的COM。在转换任务比较小的时候,程序顺利跑下来,但是在转换任务比较大的时候,也就是代转换文件比较大的时候,调用实现了Rtf2Html的COM的Convert方法出现访问地址违例的异常。但是把这段代码出错代码抽出来,单独写EXE调用实现了Rtf2Html的COM的转换反法又是成功的,搞的我很是狼狈。这个Rtf2Html的COM是一个同事用C++写的,不知道是怎么实现的。估计Rtf2Html的COM本身没什么问题,是COM的调用环境比如线程模式的匹配等等原因,用托管的代码调用COM实在是搞不懂。(现在想起《COM本质论》上有一句话,理解COM是开发人员的基本技能,果然是如此!想来实在是汗颜,Don Box的《COM本质论》和潘爱民的《COM原理和应用》买过来都快发霉了,一直都没看下去
,鄙视自己)今天我历经千辛万苦终于找到一个Delphi组件库,1.9 版本的TRichView,实现了Rtf2Html的功能,然后替换了那个Rtf2Html COM,到目前为止调用WebService还没有失败过。不知道测试组测试之后会有什么结果,活活~~~~另外有一个很奇怪的问题,就是Delphi客户端程序调用这个WebService方法有时候会出现一个异常提示,具体大致是XML不格式不正确,我猜想可能是返回的Soap包不正确,可能是空,但是实际上WebService方法所要实现的功能都已经顺利完成。这个WebService方法是被Delphi客户端程序在For语句中循环的同步的调用N次的,并且奇怪的是,在日志中却发现,第一次的调用还没有完成,下一次又开始了。不知道同步调用WebService方法执行大任务的时候,WebSerivce本身支持不好,还是WebService服务实现的问题还是客户端调用的问题?迷漫中......