有時我們需要將來自於客戶端的文件上傳到WEB服務器端,並在服務端將文件存儲到第三方文件服務器中存儲。
實現如下:
1、在文件服務器B上建立一共享文件夾,同時在該服務器上創建一用戶,如DocShareUser,給此用戶分配共享文件夾的讀寫權限
2、在WEB服務器A上也同時傳建一同名用戶DocShareUser (注意,用戶名和密碼必須一致)
3、在網站下添加一虛擬目錄,虛擬目錄的物理路徑執行服務器A的共享目錄,路徑符合UNC規則,如\\ServerB\DocShare,傳遞身份驗證用戶設置為默認即可。
4、信任關系權限,只有在建立信任的基礎上,方可向B服務器上傳文件,該問題可通過兩種方式解決,
方式1:在Web.Config中增加運行模擬帳號<identity impersonate="true" userName="DocShareUser" password="password" />
方式2:在Global.asax中加載,網站一運行就自動建立信任關系,System.Diagnostics.Process.Start("net.exe", "use \\\\B服務器的IP\\共享文件夾 \"B服務器上的密碼\" /user:\"B服務器上的用戶名\""),B服務器上的用戶是指能寫入那個共享文件夾的用戶 (建議使用此方式,不會影響網站認證的變化)
5、步驟4如采取Web.Config中增加模擬帳號方式,則需要給C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files臨時目錄分配所建用戶DocShareUser的讀寫控制權限 (路徑視安裝Framework版本而定)
6、代碼中通過Server.MapPath("虛擬目錄")方式獲取上傳地址,寫入文件流即可
7、注意上傳文件IIS有默認4M限制,可通過WEB.config修改,如下
復制代碼 代碼如下:
<httpRuntime maxRequestLength="10240" appRequestQueueLimit="90" executionTimeout="90"/>
以上在WIN2008R2+IIS7下驗證通過。