好久没有在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服务实现的问题还是客户端调用的问题?迷漫中......