我抄书上的,怎么不对?

hfyou 2000-08-09 11:54:00
这是《Active server pages & web 数据库》书中的计数器例子,基中的global.asa文件是这样的:
---global.asa---

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart

set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=server.MapPath("/counter/count.txt")
set txt=fs.OpenTextFile(countfile)
Application("counter")=txt.ReadLine
txt.Close
set Application("fs")=fs
Application("countfile")=countfile
end sub

sub Application_OnEnd
set fs=Application("fs")
countfile=Application("countfile")
set txt=fs.CreatTextFile(countfile,true)
txt.WriteLine(Application("counter"))
txt.close
end sub
</SCRIPT>
但是报错, 说是行9 不能添加 apartment 型的对象到应用程序的实质对象中。
请大家帮忙改正。谢谢
...全文
219 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfyou 2000-08-10
  • 打赏
  • 举报
回复
加mxp老兄:
不好意思,我的代码上没错,是我网上写错了,用session_onstart是没问题,因为是马上写文件了,但是如果要让他在Application_OnEnd里执行却是不行,你可以把你的代码发给我看看吗?我这里怎么都通不过,理论上这样应该也不行的。
我是MAIL:HFYOU@SINA.COM,
ICQ:73697494
oicq:764795
oicq现在开不了,只能晚上6:00以后才能开。
mxp 2000-08-10
  • 打赏
  • 举报
回复
呜~~~~!
我原来的方法是正确的,就因为懒了,抄写了您贴出的代码!
Application_onend 是在网站关闭才执行的,您发现数字未变化是因为您少写了一个字母!!

是:
set txt=fs.CreateTextFile(countfile,true)
而不是
set txt=fs.CreatTextFile(countfile,true)

太冤枉了!
要是不怕效率不好,想要立刻看结果,用以下代码就行了。

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=server.MapPath("count.txt")
set txt=fs.OpenTextFile(countfile,1,false,false)
Application("counter")=txt.ReadLine
txt.Close
Application("countfile")=countfile
end sub


sub session_onstart
session.timeout=5
application.lock
application("counter")=application("counter")+1
set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=Application("countfile")
set txt=fs.createTextFile(countfile,true,false)
txt.WriteLine(Application("counter"))
txt.close
application.unlock


end sub

</SCRIPT>
hfyou 2000-08-10
  • 打赏
  • 举报
回复
to huntout :这个方法其实也是错误的,Application_OnEnd 根本没起作用,它只不过是让计数器每加15后就去存盘,但是如果计数器再16时关掉服务器再开,计数器仍然在15。
to cxfidc:你先告诉我该怎么解决,你确定你的方法一定能够解决我的问题吗?
hfyou 2000-08-10
  • 打赏
  • 举报
回复
to mxp: 你说MAIL程序的错误吗?它没给作何提示,但是一大批邮件在Queue目录里发不出去。
mxp 2000-08-10
  • 打赏
  • 举报
回复
出什么样的错误?
组件注册成功了吗?
hfyou 2000-08-10
  • 打赏
  • 举报
回复
KAO,我上面的代码在NT4下一点问题都没有,但是在WIN2K下就是报那个错请问怎么办?
我昨天也的发邮件的程序也是这样,NT4没问题,2K不行,
请看:
<%@ Language=VBScript %>
<%
Set myMail = CreateObject("CDONTS.NewMail")
myMail.From = "you-you@163.net"
myMail.To = "hfyou@sina.com"
myMail.Importance =2
myMail.MailFormat=0
myMail.BodyFormat=0
myMail.Subject = "yy"
myMail.Body ="youyou111"
myMail.Send
Set myMail = Nothing
%>
有什么办法吗?
cxfidc 2000-08-09
  • 打赏
  • 举报
回复
先给我分!!!!1
huntout 2000-08-09
  • 打赏
  • 举报
回复
您參考一下下面的代碼,這是通過了的。
<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Application_OnStart
filename = Server.MapPath("visitors.txt")
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
Set Out= FileObject.OpenTextFile(filename, 1, FALSE, FALSE)
Application("visitors") = Out.ReadLine
Out.Close
Application("filename") = filename
END SUB

SUB Application_OnEnd
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
Set Out= FileObject.CreateTextFile(Application("filename"), TRUE, FALSE)
Out.WriteLine(application("visitors"))
Out.Close
END SUB

SUB Session_OnStart
' Increase the visitor counter
Application.lock
Application("visitors") = Application("visitors") + 1
t_visitors = Application("visitors")
Application.unlock
Session("visitorID") = t_visitors

' Periodically, save to file
If t_visitors Mod 15 = 0 Then
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
Set Out = FileObject.CreateTextFile(Application("filename"), TRUE, FALSE)
Application.lock
Out.WriteLine(t_visitors)
Out.Close
Application.unlock
End If
END SUB

</SCRIPT>
hfyou 2000-08-09
  • 打赏
  • 举报
回复
但是又无法用set Application("fs")=fs 有什么方法代替吗?
每次都写文件肯定是可以的,但太浪费CPU和硬盘。
hfyou 2000-08-09
  • 打赏
  • 举报
回复
To mxp huntout:
不知你们试了没有,我试了试你们的代码,都通不过。
当Application 要结束的时候(Application_OnEnd启动时),server已不能使用,那么在后面的fs对象也就无从创建,就无法把计数器写进文件里去。
huntout 2000-08-09
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart

set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=server.MapPath("/counter/count.txt")
set txt=fs.OpenTextFile(countfile)
Application("counter")=txt.ReadLine
txt.Close
Application("countfile")=countfile
set fs = nothing
end sub

sub Application_OnEnd
set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=Application("countfile")
set txt=fs.CreatTextFile(countfile,true)
txt.WriteLine(Application("counter"))
txt.close
set fs = nothing
end sub
</SCRIPT>
mxp 2000-08-09
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=server.MapPath("/counter/count.txt")
set txt=fs.OpenTextFile(countfile,1,false,false)
Application("counter")=txt.ReadLine
txt.Close
Application("countfile")=countfile
end sub

sub Application_OnEnd
set fs=Server.CreateObject("Scripting.FileSystemObject")
countfile=Application("countfile")
set txt=fs.CreatTextFile(countfile,true,false)
txt.WriteLine(Application("counter"))
txt.close
end sub

sub session_onstart
session.timeout=5
application.lock
application("counter")=application("counter")+1
application.unlock
end sub

</SCRIPT>


28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧