• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

FileCopy

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 20次 | 进入软件测试论坛讨论

领测软件测试网 我正在调查一个project:把一个ASP程序从Winnt Server 4.0+IIS 4.0迁移到Win2000 Server+IIS5。第一次使用ASP,所以愿意把这个过程中遇到的一些问题和解决方法整理出来留在这里。“发表是最好的回忆。”

下面是第一部分,和FileCopy相关的一点讨论。

一、问题本身
ASP程序在部署在Interpub目录下,目录结构大概如下——

############################################
Interpub
---------ABC(我们的ASP目录)
----------*.asp/*.htm/*.asa
----------doc
----------docbase
----------(其它子目录)
#############################################

ASP程序调用一个叫ABC.dll的动态链接库,执行一组操作。其中一个动作是使用FileCopy函数把一个Word文件从docbase目录复制到doc目录。

FileCopy strSrc, strrDis

每次执行到这个语句的时候都出现错误号为75的VB运行时错误(“路径无效”)。其实,docbase里的Word文件路径和doc目录都是存在且正确的,但不知道为什么这一步却执行不过去。

我修改ABC.dll代码,做了两个实验——
(1)我把FileCopy的第二个参数改为InterPub目录外的一个位置C:\temp

FileCopy strSrc,"C:\temp\filename.doc"

运行结果:正确。可以把文件复制到"C:\temp"。
(2)我在ABC目录新建一个子目录test,执行下列动作

FileCopy strSrc,"C:\test\filename.doc"

运行结果:不正确。错误号仍然是75(“路径无效”)。

此外,还有其他几点值得注意——
(1)在ASP文件里直接使用VBScript脚本执行FileCopy动作是可以的;
(2)我们的服务器是IIS 5.0。若把程序放在IIS 4.0下却可以顺利执行。
(3)同事们说若是授权方面存在问题,可以考虑使用dcomcnfg命令进行配置。

二、解决方法

修改doc子目录的访问权限即可解决这个问题。
第一个办法:在doc目录的属性页里找到“security” page,向“everyone”用户授予“change/write”权限;
第二个办法:在doc目录的属性页里找到“security” page,添加一个“IUSER”用户,并向其授予“change/write”权限。
第三个办法:把doc目录迁移到Interpub目录外边去。这样,“everyone”用户默认拥有“change/write”权限。

三、原因
在NT下,即使在wwwroot下,everyone用户仍然有“full control”权限;
在2000下,一旦将目录复制到wwwroot下,everyone用户的权限立刻变为“read/run”。
这就是导致FileCopy问题的根源吧。
我这个时候才发觉,在我们这个小小的升级项目调查过程中必须把“操作系统差异”作为重要任务。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网