2012-03-10 164 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帐户,我不相信您可以用它来保护目录。如果是这种情况,则需要将应用程序池标识至少更改为本地服务,然后为该用户保护该目录。

如果您尝试写入的目录是网络共享,则需要确保使用域帐户作为模拟用户或作为应用程序池标识。