问:为什么安装之后不能运行?
答:可能是你的机器没有安装VB,以后的版本我会将VB自带的控件打包进去,不过会造成安装程序很大,这样运行我的程序是没有问题的,但生成VB工程后没有VB是无法编译的。
问:转换一些大型的ASP网站时,编译时提示过程太大的问题如何解决?
答:这是因为某些网站的ASP网页数量很多(通常过千),或者某些过程代码过长,编译时都会造成这种现象,在正式版将会提供生成工程组的功能,拆分成若干个较小的VB工程,并且可以将超长的过程拆分成若干小的过程,从根本上解决这种问题。
问:一些HTML代码很长,转换成VB代码后编译出错如何解决?
答:在HTML中的代码长度没有限制,VB代码的物理行最多可含1023个字符,版本0.98开始可以自动将超长的代码拆分成若干行分批输出。
问:能否提供转换成ASPX的软件?
答:很快会提供ASP转换成ASPX的测试版。
问:ASP脚本包括VBScript和JScript、能否提供对基于JScript脚本的支持?
答:版本1.1开始提供了Jscript的支持。
问:是否转换成Dll之后速度就一定比原来的快?
答:不一定,速度快只体现在大量逻辑运算的情况,如果是静态输出,则可能会慢一点,因为创建组件需要一定的时间,当然,如果要彻底保护所有的源代码则另当别论了。
问:编译成Dll之后是否可以彻底保护好源代码,而不会被反编译?
答:如果在编译选项中指定为P-Code就较容易反编译,但如果编译成机器码,是不可能反编译回VB代码的。
问:生成Class之后每一过程或函数都有If Err.Number = -13572468 Then Exit Sub语句是怎么回事?
答:-13572468其实是一个自定义的运行时错误代码,用于捕捉Response.End语句。因为在ASP脚本中如果使用了Response.End语句,后面的代码就不再执行,但在VB中仍会继续执行,如果仅仅在Response.End后面加入Exit Sub却不能防止在子过程或函数中使用Response.End这种情况,因为这种情况下,AspClassInit仍然会执行余下的代码,因此加入了这个运行时错误,以确保完全中止。
问:一些技术文档里面,将ASP写成Dll是使用OnStartPage,OnEndPage事件,有什么不同?
答:写法有多种,这是一种较旧的写法,能用于IIS3.0,以后的版本可以通过GetObjectContext获取ASP环境,结合MTS/COM+的特点效率更高。在1.1版本中提供了初始化代码的模版功能,可以自定义Class中的初始化代码。
问:编译后为什么速度并没有明显改善?
答:具体问题要具体分析,一个网站的总体性能包括几方面的因素,Web服务器是其中之一,还要看数据库服务器,网络传输,磁盘I/O等,假如瓶颈在数据库的话,Web服务器再快也无法改善整体速度。
问:编译后的稳定性如何?
答:理论上编译成Dll比较本运行更稳定,早期版本的IIS执行ASP的时侯经常出现ASP 0115 Eror,编译后会减少这种现象。
问:部署到Web服务器的时候需要安装VB和你的软件吗?
答:不需要,你可以在一台win98上安装VB和ASPTODLL风火轮,编译之后将生成的Dll在Web服务器中注册,然后将ASPCODE目下的所有文件复制到Web服务器新建的虚拟目录,或替换原先的虚拟目录即可(注意先备份原先的ASP目录)。
问:你的软件能否像NetBox那样,脱离IIS吗?
答:不可以,必须要依赖IIS。ASP风火轮虽然可以将ASP脚本编译成Dll,但是仍然需要使用ASP组件,仍然依赖IIS。脱离IIS的程序从根本意义来说已经不是真正的ASP,只是一个兼容ASP的程序。
问:转换工程出现的完全封装和隔离封装有什么不同?
答:所谓完全封装是指将整个ASP页面的所有代码全部封装到Dll中,而隔离封装是指仅仅封装页面的ASP代码,而将静态的HTML代码留在ASP页面中,这样可以有效的减少Dll的体积。
问:为什么我的ASP页面执行没有错误,转换后用VB编译不能通过,编译到一半的时候,总是发现语法错误、找不到函数或过程的问题?
答:对于一个较大型的ASP网站,经过反复多次改动,往往出现一些语法错误,缺失Include文件导致找不到函数或过程的问题,而且冗余代码过多,VB不能编译大概分几种情况:
1.语法错误,在ASP页面中如果使用了'On 'Error '虚拟主机不允许使用该语句 'Next '虚拟主机不允许使用该语句 语句,页面解释执行的时候碰到错误的语法就不会显示出错信息。但是VB的编译过程却不容许语法错误。如果ASP代码使用了VB的保留字作为参数或者变量的名字,在VB中也是不能编译通过的。
2.找不到函数或过程,这种情况可能是编译包含文件所引起的,打个比喻,假设a.asp包含b.asp,a.asp页面内有函数TEST(),而b.asp要调用TEST(),那么执行a.asp是没有问题的,编译a.asp是没有问题的,b.asp其实是被包含的文件,并没有单独的执行能力,因为b.asp里面找不到TEST(),所以不能被单独编译,由于整个网站可能有很多像b.asp这样的没有独立执行能力的被包含文件,因此,转换的时候必须选择好哪些文件要转换,哪些不用转换,以免导致编译出错。