2012-03-10 161 views
0

問:我用下面的代碼片段上傳文件...當我用它工作得很好<identity impersonate="true" /><authentication mode="Windows" />:如何使用<identity impersonate="true" /><authentication mode="Forms" />上傳文件時出錯

問題上傳文件但只要我將<authentication mode="Windows" />更改爲<authentication mode="Forms" />,就會出現拒絕訪問錯誤。如何解決此問題?

我需要使用<authentication mode="Forms" />爲我的註冊和登錄系統工作。希望你們明白我的觀點。

If fuProfilePicture.HasFile Then 
    fuProfilePicture.SaveAs(System.IO.Path.Combine(Server.MapPath("ProfilePictures"), _userName & System.IO.Path.GetExtension(fuProfilePicture.FileName))) 
Else 
    Response.Write("Select An Image") 
End If 
_profilePic = "ProfilePictures" & "/" & _userName & System.IO.Path.GetExtension(fuProfilePicture.FileName) 
+0

如果您禁用模擬,會發生什麼情況? – 2012-03-10 19:40:15

+0

我收到了同樣的錯誤...「訪問被拒絕」 – user1150440 2012-03-10 19:43:47

+3

擁有您的Web應用程序的用戶沒有權限訪問您要寫入的目錄。檢查您的目錄權限。 – 2012-03-10 19:50:36

回答

2

如果您在web.config身份元素指定一個用戶名,那麼這個用戶需要具有寫權限的目錄,你正試圖將文件存儲。

否則,網站所在應用程序池的用戶需要具有對目標目錄的寫入權限。請注意,較新版本的IIS默認使用ApplicationPoolIdentity帳戶,我不相信您可以用它來保護目錄。如果是這種情況,則需要將應用程序池標識至少更改爲本地服務,然後爲該用戶保護該目錄。

如果您嘗試寫入的目錄是網絡共享,則需要確保使用域帳戶作爲模擬用戶或作爲應用程序池標識。