我有一个经典的 ASP 网站,我们已从 IIS 6 迁移到 Win2k8 和 IIS 7。在网站文件夹结构中,有一个名为 Products 的虚拟目录,其中包含物理存储在同一服务器上其他位置的 JPG。
在 Web 浏览器中,任何产品 JPG 都可以正确显示在页面上。例如。http://www.MySite.com/images/poducts/widget.jpg工作是一种享受。
但是,当尝试使用 FileSystemObject 在 ASP 代码中访问该文件夹时,该文件夹不可用 - 除虚拟目录外,所有其他文件/文件夹都在那里。下面是一个 ASP 代码片段示例:
Set objFSO = Server.CreateObject( "Scripting.FileSystemObject" )
Set objBaseFolder = objFSO.GetFolder( Server.Mappath( "../../Images" ) )
For Each objFolder In objBaseFolder.SubFolders
Response.Write( objFolder.Name & "<br>" )
Next
Set objFolder = Nothing
Set objBaseFolder = Nothing
Set objFSO = Nothing
此外,Persit 的 ASPJpeg Com 对象在从 ASP 代码向该虚拟目录打开和保存 JPG 文件时没有问题。
在IIS7中,网站有一个应用程序池,我尝试了各种方式设置其身份,但无济于事。我还尝试将各种安全设置(IUSR_、网络服务等)应用于虚拟目录指向的物理文件夹 - 甚至一度授予“每个人”完全控制权。
看起来 ASP 进程确实没有虚拟目录的权限。如果有人知道如何解决这个问题,那么我将不胜感激。
Using FileSystemObject
这样做永远行不通,因为它只适用于物理文件系统。它不知道也不理解虚拟目录——站点的这方面完全由 IIS 管理。
这不是权限问题,而是目录实际不存在的问题,所以浏览物理文件系统永远不会看到它
IIS管理虚拟目录:
- 在浏览器中导航到图像是可行的,因为 IIS 会自动将虚拟路径映射到适当的物理路径。
- 使用 AspJpeg 最有可能起作用,因为它使用对
Server.MapPath
将给定路径解析为物理路径
这不可能是权限问题,因为您自己声明 AspJpeg 可以很好地读取和写入虚拟目录,而且您可以通过浏览器访问它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)