[英]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應用程序池標識)可讀的權限。 如果您真的想使用管理共享名,則必須修改管理共享的權限,並且可能需要執行以下操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.