asp.net 訪問局域網共享文件

最近有個項目ASP.NET的項目,要讀寫一個局域網裏的共享文件夾上的文件,記錄以下:

一、訪問共享文件

在這裏我定義了一個方法,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\.........

通過網上搜索出來了不少的解決方案,在這結合本身的成功經歷說明一下。以下:測試

二、IIS上訪問共享文件夾或文件

不知道還有沒有別得辦法,在這裏我說明下個人實現方式。具體以下:網站

舉個例子:兩臺服務器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>

 

這樣基本OK了,我也想上傳圖片,可是公司網不容許上傳。。。。。因此在這裏有一個網址: http://www.javashuo.com/article/p-gizfivlc-ds.html
裏面就是這些操做,對於建立共享文件夾的第2步:來到172.18.5.61,B服務器,打開個人電腦,在空白處右擊,添加網路位置」用不着操做。。。 

 

 

出處: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項目有所不一樣吧。

相關文章
相關標籤/搜索