實戰ASP.NET訪問共享文件夾(含詳細操做步驟)

博客園找找看(http://zzk.cnblogs.com)的索引文件佔用空間太大,須要移至另一臺服務器,因此要解決「在ASP.NET中經過共享文件夾訪問索引文件」的問題。html

假設找找看的ASP.NET程序在A服務器,索引文件在B服務器的ZzkIndex共享文件夾中,訪問地址是\\192.168.18.18\ZzkIndex\。要實現就是在A服務器的ASP.NET程序中能讀寫共享文件夾\\192.168.18.18\ZzkIndex\中的文件。web

參考園子裏的 asp.net訪問網絡映射盤的問題 文章,咱們解決了這個問題,在這裏分享一下。服務器

具體操做步驟:
(注:A服務器爲ASP.NET程序所在服務器,B服務器爲共享文件夾所在服務器) 網絡

  1. 在兩臺服務器上創建相同用戶名、相同密碼的Windows賬戶(A與B服務器都要建),好比假設這裏用戶名是ZzkIndexer,密碼是zzk.cnblogs.com。
  2. 取消兩臺服務器上的ZzkIndexer賬戶的遠程控制(Remote Control)權限(讓這個賬戶擁有儘量少的權限),以下圖:

  3. 將B服務器上的ZzkIndexer賬戶移出全部用戶組(包含Users),以下圖:

    不屬於任何用戶組?是的,不要懷疑,已通過實踐檢驗。 asp.net

  4. 在B服務器上建立共享文件夾ZzkIndex並給ZzkIndexer賬戶授予寫權限,有兩個權限須要設置,一個是文件系統權限,一個是共享權限。
    文件系統權限設置以下圖:

    共享權限設置以下:

  5. 在A服務器的IIS中建立虛擬目錄指向B服務器的共享文件夾,以下圖:

    點擊「肯定」後,若是出現訪問拒絕(Access to the path '\\192.168.18.18\ZzkIndex' is denied.)的錯誤,不用管它。
  6. 在A服務器的ASP.NET程序的web.config文件中,添加賬戶模擬設置:
    <system.web>
    <identity impersonate="true" userName="ZzkIndexer" password="zzk.cnblogs.com"/>
    </system.web>
  7. 在A服務器上,設置「C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files」的文件系統權限,授予ZzkIndexer賬戶修改權限(注:v4.0.30319爲當前.NET Framework版本號)。 不然,運行時會出現錯誤:The current identity (ZzkIndexer) does not have write access to 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files'.
  8. 萬事具有,只欠測試!用一個簡單的test.aspx頁面測試一下,代碼以下:
    複製代碼
    <%@ Page Language="C#" AutoEventWireup="true" %>
    <script runat="server">
    protected
    void Page_Load(object sender, EventArgs e)
    {
    System.IO.File.Create(Server.MapPath(
    "/ZzkIndex/cnblogs.txt"));
    }
    </script>
    複製代碼
    訪問test.aspx以後,看B服務器的ZzkIndex共享文件中的內容:

    搞定!ide

小結post

「解決問題+寫博客」花費的時間多是「解決問題+不寫博客」的兩倍,但寫出來以後,你不再用擔憂再次遇到這個問題,不再會出現這樣的鬱悶:有人問我一個曾經解決過的問題,我卻忘了當時是怎麼解決的。 測試

 

出處:http://www.cnblogs.com/dudu/archive/2012/03/27/asp_net_share_folder.htmlthis

相關文章
相關標籤/搜索