各位高手,我在ASP中调用我用VB写的DLL中的一个函数,这个函数会向另一台FTP服务器发送一些文件,整个FTP通讯过程(包括浏览目录,文件比较,文件上传等等)最长可能会持续1-2个小时,也就是说这个DLL函数可能会很久才能返回,用户经常会在该ASP page运行一段时间后在IE中得到一个"Page can not be displayed"出错信息,但有时又会一切运行正常。我现在在DLL中把整个FTP的通讯过程都记录到一个log file中,根据最新的log file显示,我的DLL好像是在运行了1.5小时后突然被中断了。FTP服务器的日志文件并没有显示任何出错信息,我实在不知道是怎么回事,请大家多多指教,谢谢!Tracy

解决方案 »

  1.   

    要运行那么长时间,DLL应采用异步运行的办法,ASP应分次提交。
      

  2.   

    假设你要传递一个很大的文件到一个FTP服务器上,如果这个文件是来自于用户端,那真的没什么好办法,只能要求用户压缩或者分成几包来传送;如果用户只是发送一个命令,文件是从web服务器端传送到ftp服务器,那最好用异步的方式,即一接受到命令就直接返回用户端一个信息,告诉它准备传送,然后dll中可以另启一个线程,定时启动也行,然后在开始传送,这样web服务器不会去等待dll执行完成,用户端也不会一致等待web服务的信息。当然,你需要一些方式去记录什么时候异步执行开始、什么时候结束,这个方法用文件来记录、用数据库来记录都可以,其中也可以由异步执行的那段程序不断的设置已经传送了多少,然后可以另外作一个页面由用户来查看命令执行的情况,这样用户也不用一直等在计算机前面了。