我抄书上的,怎么不对?

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 型的对象到应用程序的实质对象中。
请大家帮忙改正。谢谢
...全文
220 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>


java8 源码 JavaRelatedBooks(Java相关:books:书籍推荐) 读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,逻辑修辞之学使人善辩. ---培根 从毕业之后到现在已经有将近4年的时间,之前一直对读书有一种抵制心里,但是每当自己离职找工作的时候都会感到面试官怎么问的都是平时 工作中没有遇到的,怎么都是底层的东西,高并发还有什么架构设计,每当面试的时候都一直在假装说服自己,等自己找到一份工作之后就好好 努力多看看底层的一些技术,但是直到我现在才慢慢的领悟到从哪能够获取这些底层的技术知识,有的人可能会说在网上看博客、看视频、等一 些培训机构买来的一些视频来看,虽然我也这样做过但是我感觉从网上博客上看的,视频看的及培训机构看的,都是过眼云烟并且网上的东西大 多数都是重复的你抄我的,我抄其他人的放在自己的博客上,增加自己博客的访问量,对还是不对没人知道。那时候看纯属快速应付面试的,不 能在自己的大脑中形成一个闭环,知识零零散散不系统,过一段时间就还是一样和不看差不多,一点印象都没有。为此我尝试着闲暇时间看书来 提升自己技术上的不足,况且书中的内容相对来说更

28,390

社区成员

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

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