1

我正在尝试一些非常简单的事情,但我对此感到头疼。我很确定我在这里所拥有的只是一个我不知道如何解决的权限问题,但我可能是错的。

这是我的场景...我有 3 台服务器...

  1. 服务器 A - Web 服务器 (Windows 2003) - 启用匿名访问
  2. 服务器 B - 红 5 媒体服务器
  3. 服务器 C - NAS

服务器 A 上的网站允许将视频录制/上传到服务器 B,在该服务器 B 上处理/转码视频。然后,服务器 B 上的 Cron 作业将视频移动到服务器 C 进行存储。

然后,用户可以通过在 IIS 中设置的虚拟目录从服务器 A 观看他们的视频,该目录指向服务器 C 并作为域用户帐户连接。

我需要了解如何使用 ASP 文件系统对象来获取服务器 C 上包含视频的文件夹的大小。

我已使用 UNC 路径 (\servername\videos) 将服务器 C 上存储视频的文件夹的父文件夹映射到服务器 A 上的驱动器号。

我尝试使用 FileSystemObject 的 folderExists() 方法进行调试,如果我传入映射的字母驱动器或 UNC 路径,它会返回 false。它给出了一个找不到路径的错误。只是为了确保我对传递给 folderExists() 方法的路径进行了 response.write 并且它是正确的路径。所有这一切让我相信这确实是一个我不知道如何解决的权限问题。

谢谢,瑞安

4

3 回答 3

2

在 IIS6 上的 ASP 中,映射的网络驱动器对您没有用处,因为它们是用户配置文件的一部分。用户配置文件未完全加载到 IIS6 等服务中。

假设一个纯 ASP 环境(您不能安装其他 dll 等),那么您将需要匿名用户访问存储视频的网络共享并使用 UNC 路径。

现在,IUSR 帐户通常是无法访问网络的本地访客帐户。您需要在 NAS 所属的域上创建一个用户,并将用户凭据指定为那些需要执行“获取大小”任务的页面的匿名用户帐户(您不需要更改整个匿名用户应用)。

上述假设服务器 A 是与服务器 C 相同域的成员。如果不是,那么您需要在服务器 A 所属的域上创建用户,以镜像服务器 C 上的用户,包括其密码(或通过信任关系跳转箍)。

有了它,您就可以继续使用FileSystemObject.

于 2010-01-05T20:46:09.513 回答
1

您需要使用 FSO.Drives 集合才能访问您的 NAS。看看这篇文章(刚用谷歌搜索过,但看起来还可以):

http://www.stardeveloper.com/articles/display.html?article=2001050301&page=1

尝试运行它并查看您的驱动器是否可用,如果它是权限问题,应该有助于缩小范围

<%

Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")

Dim drives
Set drives = fso.Drives

Dim isReady

For Each drive in drives
    isReady = drive.IsReady

    If isReady Then
        Response.Write "DriveLetter: " & drive.DriveLetter & "<br>"
        Response.Write "Path: " & drive.Path & "<br>"
        Response.Write "FileSytem: " & drive.FileSystem & "<br>"
        Response.Write "TotalSize: " & drive.TotalSize & "<br>"
        Response.Write "FreeSpace: " & drive.FreeSpace & "<br>"
    Else
        Response.Write "Driv Letter: " & drive.DriveLetter & "<br>"
        Response.Write drive.Path & "<br>"
        Response.Write "No other information available."
    End If
Next

%>

试一试,看看你是否还有问题,如果是这样,我们会更深入地挖掘:)

于 2010-01-05T18:42:19.013 回答
0

不确定这是否是正确的做法,但为了解决这个问题,我必须像这样通过 ASP(作为 IUSR_machine)帐户映射网络驱动器......

dim objNetwork

Set objNetwork = CreateObject("WScript.Network") 
objNetwork.MapNetworkDrive "X:", "UNC path", "profile", "user", "password"

objNetwork.RemoveNetworkDrive "X:"
set objNetwork = nothing

然后我能够通过 FileSystemObject 访问映射的驱动器号(在本例中为 X)。

于 2010-01-05T20:01:44.970 回答