![](/img/trans.png)
[英]C# System.IO.File.Copy from shared drive works on localhost but access to the path is denied on server
[英]Copy file from one server path to another showing access denied
雖然我已授予完全訪問權限,但文件從一個服務器路徑復制到另一個顯示訪問被拒絕的服務器。
錯誤:System.UnauthorizedAccessException:對路徑的訪問被拒絕。 在System.IO.File.InternalMove處位於System.IO .__ Error.WinIOError(Int32 errorCode,字符串mayFullPath)(字符串sourceFileName,字符串destFileName,布爾值checkHost)
我已嘗試授予所需文件夾的安全訪問權限
string sourceFile = "C:/inetpub/wwwroot/MATS_History_Load_App/Python_Scripts/MATSUpgrade.xlsx";
string destinationFile = "//192.xxx.47/Mats/mats_test/MATSUpgrade.xlsx";
// To move a file or folder to a new location:
System.IO.File.Move(sourceFile, destinationFile);
重要說明:該應用程序托管在IIS上
假設您的代碼流程的標識沒有訪問問題:
開箱即用的效果很好,嘗試用反斜杠替換斜杠並在路徑字符串前使用@
:
string sourceFile = @"C:\temp\test.txt";
string destinationFile = @"\\fileshare\users\xy\prime.txt";
System.IO.File.Move(sourceFile, destinationFile);
否則,在服務或Web托管方案中,您需要考慮執行身份的訪問權限:
https://support.microsoft.com/zh-CN/help/207671/how-to-access-network-files-from-iis-applications
據我所知,是否要修改或訪問網絡共享文件夾。 您應該確保選擇了正確的應用程序池標識許可權。 如果使用網絡服務帳戶作為標識,則仍需要在共享文件夾上添加足夠的權限,因為網絡服務和本地系統都以計算機帳戶(DOMAIN \\ computer $)的形式出現在網絡上。
通常,我們將選擇網絡服務。
詳細信息,您可以參考以下步驟:
1.打開IIS管理控制台,選擇正確的應用程序池,然后單擊高級設置。
2.選擇身份並將帳戶修改為網絡服務
3.右鍵單擊計算機,然后單擊屬性,您將找到以下計算機名稱:
4.轉到共享文件夾服務器,右鍵單擊該文件夾,然后單擊屬性。 然后,您可以像這樣(Domain \\ Servername $)將服務器的帳戶添加到該帳戶中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.