0

嗨,我在 asp.net 中上传图片时似乎遇到了问题。当我尝试上传图片时,出现此错误:

拒绝访问路径“D:\Projects IDE\Visual Studio\MyWork\Websites\Forum\Images\avatar\userAvatars\aleczandru”。

我已将应用程序池 Identoty 设置为 NETWORKSERVICE 并且还以完全权限将 NETWORK SERVICE 帐户添加到 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);
    }
}

我还能做些什么来解决这个问题?

编辑

嗨,此时我对以下用户拥有完全的权限控制:

  • 认证用户
  • IUSR
  • 系统
  • 网络服务
  • IIS_WPG
  • 行政人员
  • 用户

我是否需要为 IIS 设置任何配置才能使其正常工作?

编辑

在过去的几天里,为了完成这项工作,我一直在使用 SQL-SERVER,所以我可能错误地配置了一些我理解的网络服务存储在 SQL-SERVER master.db 数据库中的东西。我似乎有两个网络服务登录可能是这个问题吗?我记得当我第一次检查它时我没有现在我有两个:

在此处输入图像描述

编辑

这是我添加到文件夹的权限的打印:

在此处输入图像描述

编辑:完全错误

在此处输入图像描述

堆栈跟踪:

在此处输入图像描述

4

5 回答 5

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)));
于 2012-12-11T15:51:54.487 回答
4

请确保您的路径中有完整的文件名和文件扩展名。

于 2012-12-11T13:28:53.013 回答
1

好的...我之前已经为一个项目完成了此操作,以实现 http 的 PUT 方法。我不记得很清楚了..但是一些提示...如果我在办公室,我可以正确地告诉您。这是提示

  1. 您需要添加 IIS_IUSRS 才能访问 Windows 中的文件夹。
  2. 转到 IIS 管理控制台,单击已部署的站点节点,然后为进来的相同文件夹/网站请求设置权限...我不记得是哪个类别了..该设置窗格将允许您添加/修改 POST 的权限, GET 和其他动词……当你编辑它时,你应该看到管理员、特定用户帐户、匿名等选项。

可能我明天会回信……具体怎么做:-)

于 2012-12-12T23:07:33.857 回答
0

尝试赋予名为 users 的组修改此目录的权限(在安全性下)

于 2012-12-03T21:07:20.910 回答
0

您需要找出运行 asp.net 上传页面的用户。如果您没有更改它,并且没有在模拟下运行,它应该默认为本地计算机上的 ASPNET 用户。无论结果如何,都应授予该用户对该文件夹的读/写权限。

于 2012-12-03T21:13:25.833 回答