在這裏我定義了一個方法,SaveFileExist(filesrc,filename),這個方法的主要功能就是查看這個我傳入的以filename爲文件名的文件是否存在與個人filesrc路徑之下,固然filesrc就是個人共享文件路徑。html
格式如: \\10.3.2.113\\test\\testweb
/// <summary> /// 查找指定路徑的共享文件是否存在 /// </summary> /// <param name="url"></param> /// <param name="filename"></param> /// <returns></returns> private string SelfFileExist(string url,string filename) { try { DirectoryInfo di = new DirectoryInfo(url); //找到該目錄下的文件 FileInfo[] fis = di.GetFiles(); foreach (FileInfo fi in fis) { if (fi.Name.Substring(0,fi.Name.LastIndexOf('.')) == filename) { return fi.Name; } } return ""; } catch(Exception e) { return ""; } }
該方法返回的fi.Name是帶有後綴名稱的文件名,我這兒只是遍歷一下文件路徑下的文件而已,直接查看文件存不存在,或直接對文件名判斷,也就是:File.Exists(filePath)
服務器
以上的訪問在本地vs裏面運行的時候是能夠的(前提是你的電腦可以訪問這個共享地址哈)。可是呢,這個程序發佈到 IIS 上面就不是那麼的盡人意了,asp.net
無論是 Directory.Exists(dirPath)仍是File.Exists(filePath),都是返回false,而且建立失敗,ide
System.UnauthorizedAccessException: Access to the path '\\192.168.1.181\Share\Cares.S1.MVC' is denied. at System.IO.FileSystem.CreateDirectory(String fullPath) at System.IO.Directory.CreateDirectory(String path) at Cares.S1.Data.Common.FileHelper.CreatDirectory(String dirPath) in D:\_john\Work\SVN\.........
通過網上搜索出來了不少的解決方案,在這結合本身的成功經歷說明一下。以下:測試
不知道還有沒有別得辦法,在這裏我說明下個人實現方式。具體以下:網站
舉個例子:兩臺服務器A,B。A是文件服務器,B是網站所在的服務器,那麼在A服務器上設置文件共享是必須的吧。url
(1)這A服務器上設置共享的時候咱設置了一個訪問共享的帳號密碼---->測試:在B服務器上能夠經過 \\IP\文件夾路徑 這個方式訪問,輸入正確的用戶名和密碼能夠正常打開目錄或文件spa
(2)而後在B服務器上也建立相同的賬戶和密碼(謹記,必須!),在發佈的web應用網站上,點擊對應的程序池裏面,右鍵程序池->高級設置->點擊 進程模型下面的標識後面的按鈕。.net
在彈出的對話框中,選擇自定義賬戶,點擊設置按鈕,添加剛纔設置的帳號密碼,最後所有點擊肯定按鈕。
(3)在站點對應的目錄中找到web.config文件,並在裏面設置:
<system.web> <!--<identity impersonate="true"/>--> <identity impersonate="true" userName="您的帳號" password="您的密碼" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web>
出處:https://blog.csdn.net/qq_24266485/article/details/80756947
======================================================================
咱們公司是使用的 ASP.NET Core MVC 結構,在項目發佈到站點的時候也有一樣的問題。使用的是.net core 2.2版本。
總結參考上面的說法:1)在A和B服務器上建立相同的用戶名和密碼。2)共享目錄要有讀寫權限。3)只在iis的程序池中設置了用戶名和密碼
我並無再設置web.config文件,也許.net core的項目和普通的asp.net項目有所不一樣吧。