ASP调用VB写的DLL总出错,感觉与Application有关
先上ASP代码
VBScript code
<%
If Application("a") <> 1 Then
Dim tmpArray(0)
Set tmpArray(0) = CreateObject("test.ttt")
'tmpArray(0).Init Server.MapPath("./")
Application("b") = tmpArray
Application("a") = 1
Response.Write "Init"
End If
Response.Write Application("b")(0).TestStr() & Timer
%>
因为每次使用都要初始化,很浪费时间,所以就用把对象保存在Application中
不过经常出现这种错误
Active Server Pages 错误 'ASP 0115'
意外错误
/tttt.asp
外部对象中发生了可捕获的错误(C0000005)。脚本无法继续执行。
最初我以为是DLL的问题,改了很多次
最后索性DLL里就写一句
VB code
Public Function TestStr()
TestStr= "Test"
End Function
然后ASP调用依然经常错误
有时刷新N次都没问题,有时候刷新两三下就出错,出错后再刷新正常..再次刷新再次出错..反复循环
有时本地测试好像没问题了,丢到服务器上,继续出错...
还有,用VBS则完全没问题,这应该可以说明不是DLL的问题了吧
我感觉问题是使用了这种Hack的手段来把不允许保存的对象保存到Application中导致的
不过其他的方法我真的想不到了
而页面每访问一次就CreateObject,然后Init,最后Nothing我可受不了(Init是很花时间的)
以上就是我遇到的问题了,求解决方法
PS:这是我在CSDN第一次发帖...
PS2:差点忘记了,祝CSDN的各位新年快乐
------解决方案--------------------
有免费的第三方字典组件可以用于在application中存储
http://www.miniat.net/caprock-dictionary-object-component.asp
自定义的组件可用C++ ATL, delphi等来写