繁体   English   中英

检查文件在远程服务器和各种驱动器上是否存在

[英]Check if file exists on remote server and various drive

我们有一个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驱动器的正确方向

在UNC路径中,驱动器用$表示。 即D $。 尝试这个:

System.IO.File.Exists(@"\\ourvideoserver\D$\pcode\videofile_name.mp4")

因此,这样的事情应该可以工作(当我将其作为更改服务器名称的单元测试来运行时,它可以工作)。

[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资源管理器访问该文件夹,并且您正在使用管理共享(例如c $,d $等),则应使用其他共享名重新共享该文件夹(因为这样可以更改使您(和IIS应用程序池标识)可读的权限。 如果您真的想使用管理共享名,则必须修改管理共享的权限,并且可能需要执行以下操作:

http://support.microsoft.com/kb/971277

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM