ADODB.Stream在ASP编程中往往用于无组件上传,并且可以指定文件编码,可以应对各种不同的需要。但是在使用ADODB.Stream过程中,往往会发生这样那样的错误,昨天就碰到了一个0x800A0C93错误,在网上找了半天也没找到解决方法,找到的都是些什么权限的问题,但是在我使用的时候,权限配置并没有问题,因此只好自己琢磨了。
如果要再现这个错误,可以使用以下代码:
程序代码:[ 复制代码到剪贴板 ]
- <script language="jscript" runat="server">
- var obj = Server.CreateObject("ADODB.Stream");
- obj.Mode =1;
- obj.Type = 2;
- obj.Open();
- obj.LoadFromFile(Server.MapPath("test.asp"));
- Response.Write(obj.Read());
- obj.Close();
- </script>
因为在使用ADODB.Stream时,我是想用它来读取文件,所以使用了Mode 1 - Read,然后使用LoadFromFile方法载入文件,但就是这里,出现问题了,运行到LoadFromFile的时候,出现错误,提示“应用程序请求的操作不允许出现在该上下文中 ”,弄了半天也没解决。
去网上找,解决方法大都一样,权限设置不对什么的,解决不了我的问题,只好继续自己琢磨。
又折腾了一会之后,想到,会不会是Mode的问题,因为之前这段代码是用得好好的,但是在放到我写的一个类的Read方法中之后,就把Mode改成1 - Read了,又想到,LoadFromFile方法应该是把所指定的文件内容写入到了ADODB.Stream对象的缓冲区当中,所以需要写权限,当下测试:
程序代码:[ 复制代码到剪贴板 ]
- <script language="jscript" runat="server">
- var obj = Server.CreateObject("ADODB.Stream");
- obj.Mode = 3;
- obj.Type = 2;
- obj.Open();
- obj.LoadFromFile(Server.MapPath("test.asp"));
- Response.Write(obj.Read());
- obj.Close();
- </script>
将Mode改成3 - ReadWrite之后,问题解决。
希望本文对你有所帮助。
xujiwei
0 条评论。