IIS訪問共享檔案詳解

張龍豪發表於2016-01-20

前言

公司同事做了一個報表系統,需要做叢集部署,本來是一件挺容易的事,但是部署過程中卻遇到啦種種蛋疼問題。

問題1、我們的報表使用的是微軟的水晶報表,需要上傳報表的配置檔案,然後水晶報表提供的控制元件來讀取檔案,不支援直接圖片伺服器提供的http:www.xxxx.com/a.jpg。但是他支援\\192.168.10.11\ImgShare\a.jpg。

問題2、IIS使用共享檔案的時候,出現許可權問題致使c#無法訪問到伺服器共享檔案。

那麼這篇文章我就針對上面2個問題來展開IIS訪問共享檔案的實戰詳細過程。

環境說明

現有3臺伺服器:(192.168.10.121)A,  (172.18.5.61)B,  (172.18.5.54)C ;

A伺服器:圖片伺服器,提供共享資料夾Ashare。

B,C兩臺伺服器做IIS叢集,部署報表系統,使用A提供的Ashare檔案。

提醒下,如果B,C的程式是跑的IIS Express,訪問A的Ashare沒問題,但是使用IIS,就訪問不到。不信你試試,下面講解是讓IIS也能訪問到的全過程。

建立共享檔案

首先建立共享檔案,不要嫌棄,建立這裡也給整理一下。

1、要共享出來的檔案,右擊屬性:共享,加入使用者許可權。

2、來到172.18.5.61,B伺服器,開啟我的電腦,在空白處右擊,新增網路位置:

 

驗證A伺服器的使用者密碼,然後就可以啦。

IIS建立虛擬目錄

右擊B伺服器的當前站點,新增虛擬目錄---連線為---特定使用者:具體配置如下

這裡需要注意的是,A檔案共享伺服器需要建立zlh使用者名稱,B,C應用伺服器也要建立同樣的使用者名稱zlh。謹記,必須!!

這裡也必須是用圖片伺服器共享出來的使用者,制定為特定使用者。

c#程式是訪問共享檔案展示

這裡做一個簡單的示例程式,判斷共享資料夾中的檔案是否存在。

  protected void Page_Load(object sender, EventArgs e)
        {
            var path = @"\FileShare\0.jpg";
            //由於FileShare是A伺服器的共享檔案,這裡解析的路徑為:\\192.168.10.121\Ashare\0.jpg"
            path = Server.MapPath(path);
            var b= File.Exists(path);
            Response.Write(b);
        }
<body>    
    <div>
       <img src="/FileShare/0.jpg" />
    </div>  
</body>
  <system.web>
    <!--<identity impersonate="true"/>-->
     <identity impersonate="true" userName="zlh" password="sa,.0" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web> 

這裡需要注意的是:該站點也需要制定特定使用者訪問,且訪問使用者為共享目錄提供的zlh使用者。

結果展示:

 

至此,IIS訪問共享檔案的問題已經全部解決完成,你也可以搭建訪問下試試。如果有問題,或有更多的解決方案分享,歡迎加入左上角的群,我們一起討論解決。

這裡我提問一個問題,是關於自己搭建檔案伺服器,那麼檔案的解壓壓縮功能,大家都是怎麼做的?

相關文章