您好我在asp.net上传图片时遇到了问题。当我尝试上传图片时出现此错误:
拒绝访问路径'D:\ Projects IDE \ Visual Studio \ MyWork \ Websites \ Forum \ Images \ avatar \ userAvatars \ aleczandru'。
我已将应用程序池设置为NETWORKSERVICE并且还将网络服务帐户添加到具有完全权限的Images文件夹中,但我仍然遇到相同的错误。
这是我的代码:
private void addImageToApp()
{
string path = "~/Images/avatar/userAvatars/" + User.Identity.Name;
createPath(path);
if( Directory.Exists(HostingEnvironment.MapPath(path)))
{
//try {
UploadImage.SaveAs(HostingEnvironment.MapPath(path));
// MultiViewIndex.ActiveViewIndex = 0;
//}catch(Exception ex)
//{
// AvatarDetails.Text = ex.Message;
//}
}
}
private void createPath(string path)
{
string activeDir = HostingEnvironment.MapPath("~/Images/avatar/userAvatars");
if( !Directory.Exists(Server.MapPath(path)) )
{
string newPath = Path.Combine(activeDir, User.Identity.Name);
Directory.CreateDirectory(newPath);
}
}
我还能做些什么来解决这个问题?
修改
嗨,此时我对以下用户有完全的权限控制:
我是否可以将任何配置设置为IIS才能使其正常工作?
修改
我最近几天搞乱了SQL-SERVER以便完成这项工作,所以我可能错过了一些形式,我理解NETWORK SERVICE存储在SQL-SERVER master.db数据库中。我好像是有两个网络服务登录可能这是问题吗?我记得当我第一次检查它时,我现在没有,我有两个:
修改
这是我添加到文件夹中的permisions打印:
编辑:完成错误
堆栈跟踪:
答案 0 :(得分:5)
在方法CreatePath
中,您正在创建文件夹'D:\ Projects IDE \ Visual Studio \ MyWork \ Websites \ Forum \ Images \ avatar \ userAvatars \ aleczandru'。
然后,您尝试使用文件名“D:\ Projects IDE \ Visual Studio \ MyWork \ Websites \ Forum \ Images \ avatar \ userAvatars \ aleczandru”保存上传的图像。
您不能拥有同名文件夹和文件。如果您尝试这样做,操作系统会告诉您访问被拒绝。
我想您要在文件夹aleczandru
中创建文件名,或者您想将文件保存为aleczandru.png
或文件夹userAvatars
中的文件。
假设您的UploadImage
是FileUpload控件,您可以使用上传文件的原始文件名将文件保存到用户的文件夹中。
UploadImage.SaveAs(HostingEnvironment.MapPath(
Path.Combine(path, UploadImage.FileName)));
答案 1 :(得分:4)
请确保您的路径中包含文件扩展名的完整文件名。
答案 2 :(得分:1)
好的......之前我已经为一个项目实现了这个实现http的PUT方法。我不清楚地记得它......但有些暗示......如果我在办公室,我可以正确地告诉你。这是提示
可能是我明天会写回来......到底该怎么做: - )
答案 3 :(得分:0)
尝试为名为users的组授予修改此目录的权限(在安全性下)
答案 4 :(得分:0)
您需要找出运行asp.net上传页面的用户。如果您尚未更改它,并且未在模拟下运行,则它应默认为本地计算机上的ASPNET用户。无论结果如何,请为该用户授予该文件夹的读/写权限。