簡體   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