我们有一个aspx页面需要检查我们的视频服务器上是否存在视频文件,如果该文件存在则显示链接。但是,我们的视频不会存储在C驱动器上,而是存储在D驱动器上。
我试过了
System.IO.File.Exists(@"http://ourvideoserver/pcode/videofile_name.mp4") and
System.IO.File.Exists(@"\\ourvideoserver\\D:\\pcode\\videofile_name.mp4")
最后一个只是疯狂猜测
我无法弄清楚如何在与C不同的驱动器上检查远程服务器上的文件。
有人能指出我如何检查远程服务器的D驱动器
答案 0 :(得分:2)
在UNC路径中,驱动器由$表示。也就是说,D $。试试这个:
System.IO.File.Exists(@"\\ourvideoserver\D$\pcode\videofile_name.mp4")
答案 1 :(得分:0)
所以,这样的事情应该可行(当我将其作为单元测试运行时,它会改变服务器名称)。
[TestMethod]
public void CheckUNCFileExists()
{
Assert.AreEqual(true, File.Exists("\\\\fileserver\\documents\\file.txt"));
Assert.AreEqual(true, File.Exists(@"\\fileserver\documents\file.txt"));
}
您可能要检查的一件事是实际共享的名称,在文件服务器上使用管理命令提示符(在我的情况下,它是“文档”共享):
C:\Windows\system32>net share
Share name Resource Remark
-------------------------------------------------------------------------------
C$ C:\ Default share
IPC$ Remote IPC
ADMIN$ C:\Windows Remote Admin
documents C:\documents
The command completed successfully.
如果路径看起来没问题(并且您可以使用Windows资源管理器进行操作),另一件需要调查的事情是您的Web应用程序的应用程序池标识(如果您使用Visual Studio之类的东西在桌面上调试,可能就是这样)或者您的IIS管理员在Web服务器端配置的任何内容)对文件夹/文件具有读取权限(对于Windows共享权限)和读取权限(通过NTFS权限)(同样,取决于管理员的偏执程度,您可能还需要“更高文件夹”的“遍历”权限。
如果使用Windows资源管理器无法访问它,并且您正在使用管理共享(例如ex c $,d $等),则应该使用不同的共享名称重新共享该文件夹(因为这将允许您要更改权限以使其/和IIS应用程序池标识可读。如果您真的想要使用管理共享名称,则必须修改管理共享的权限,并且可能需要执行以下操作: