我正在尝试一些非常简单的事情但是我很头疼。我很确定我所拥有的是一个权限问题,我不知道如何解决,但我可能是错的。
这是我的情景...... 我有3台服务器......
服务器A上的网站允许将视频录制/上传到服务器B,在那里处理/转码视频。 然后,服务器B上的Cron作业将视频移动到服务器C进行存储。
然后,用户可以通过IIS中设置的虚拟目录从服务器A观看他们的视频,该虚拟目录指向服务器C并作为域用户帐户连接。
我需要一些如何使用ASP文件系统对象来获取包含视频的服务器C上文件夹的大小。
我已经使用UNC路径(\ servername \ videos)将服务器C上存储视频的文件夹的父文件夹映射到服务器A上的驱动器号。
我尝试使用FileSystemObject的folderExists()方法进行调试,如果我传入映射的字母驱动器或UNC路径,则返回false。它给出了一个未找到路径的错误。只是为了确保我做了一个response.write传递给folderExists()方法的路径,它是正确的路径。所有这些让我相信这真的是一个权限问题,我只是不知道如何解决。
谢谢, 莱恩
答案 0 :(得分:2)
映射的网络驱动器在IIS6上的ASP中没用,因为它们是用户配置文件的一部分。用户配置文件未在IIS6等服务中完全加载。
假设纯ASP环境(您无法安装其他dll等),那么您将需要匿名用户访问存储视频的网络共享并使用UNC路径。
现在,IUSR帐户通常是本地访客帐户,无法访问网络。您需要在NAS所属的域上创建用户,并将用户凭据指定为需要执行“获取大小”任务的那些页面的匿名用户帐户(您不需要更改匿名用户)应用程序)。
前面假设服务器A是与服务器C相同的域的成员。如果没有,那么您需要在服务器A所属的域上创建用户,以反映服务器C上的用户,包括其密码(或跳转)通过信任关系箍。)
有了这些,您可以继续使用FileSystemObject
。
答案 1 :(得分: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
%>
玩一下,看看你是否还有问题,如果有的话,我们会深入挖掘一下:)
答案 2 :(得分: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)。