C# MVC文件上载未经授权的访问异常

C# MVC文件上载未经授权的访问异常,c#,asp.net-mvc-3,visual-studio-2010,C#,Asp.net Mvc 3,Visual Studio 2010,我有以下代码: [HttpPost] public ActionResult Edit(Photograph photo, HttpPostedFileBase image) { if (ModelState.IsValid) { if (image != null) { byte[] imageData = new byte[image.ContentLength]

我有以下代码:

[HttpPost]
    public ActionResult Edit(Photograph photo, HttpPostedFileBase image)
    {

        if (ModelState.IsValid)
        {
            if (image != null)
            {
                byte[] imageData = new byte[image.ContentLength];
                image.InputStream.Read(imageData, 0, image.ContentLength);
                System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData);
            }

            repository.SavePhotograph(photo);
            TempData["message"] = string.Format("{0} has been saved", photo.Name);
            return RedirectToAction("Index");
        }
        else
        {
            return View(photo);
        }
    }
这意味着拍摄从表单上传的照片并将其保存在服务器(本地服务器)中。我已经给了文件夹“VisualStudio2010”,其中所有项目都有网络服务用户权限和IIS_IUSRS组权限。我还以管理员身份运行VisualStudio

由于某种原因,它仍然不允许我将文件保存到该位置。该位置位于{project\u Name\Content\Images}下的项目文件夹中。我怎样才能把文件保存在那里

谢谢

由于某种原因,它仍然不允许我将文件保存到该位置

你有什么错误吗?如果是,请在此发布完整错误

案例一:如果您使用Visual Studio运行MVC应用程序,请确保使用“以管理员身份运行”选项运行Visual Studio

案例二:如果您在IIS上运行MVC应用程序。转到保存图像的文件夹。即授予“IIS_IUSRS”用户完全控制“修改”权限

由于某种原因,它仍然不允许我将文件保存到该位置

你有什么错误吗?如果是,请在此发布完整错误

案例一:如果您使用Visual Studio运行MVC应用程序,请确保使用“以管理员身份运行”选项运行Visual Studio


案例二:如果您在IIS上运行MVC应用程序。转到保存图像的文件夹。即授予“IIS\u IUSRS”用户完全控制“修改”权限。

RE:带有“System.IO.File.writealBytes”的行。。。您正在尝试保存到目录吗?它在哪里为上传的文件选择了一个文件名?

RE:带有“System.IO.file.writealBytes”的行。。。您正在尝试保存到目录吗?它在哪里为上传的文件选择了一个文件名?

它给我这个错误的原因是因为该方法:

System.IO.File.WriteAllBytes()
获取文件和数据的路径

我正在传递一个文件夹

System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData);
我应该传递一个文件:

System.IO.File.WriteAllBytes(String.Format("{0}{1}", HttpContext.Server.MapPath("~/Content/Images"), image.FileName), imageData);

现在我的存储库出现了一个错误,所以我正在研究:)我非常喜欢编码……)

它给我这个错误的原因是因为方法:

System.IO.File.WriteAllBytes()
获取文件和数据的路径

我正在传递一个文件夹

System.IO.File.WriteAllBytes(HttpContext.Server.MapPath("~/Content/Images"), imageData);
我应该传递一个文件:

System.IO.File.WriteAllBytes(String.Format("{0}{1}", HttpContext.Server.MapPath("~/Content/Images"), image.FileName), imageData);

现在我的存储库出现了一个错误,所以我正在研究:)我非常喜欢编码……)

您是在调试模式下通过Visual Studio运行此操作还是部署到IIS?您是在调试模式下通过Visual Studio运行此操作还是部署到IIS?我建议在案例II中,IIS_IUSR被授予“修改”权限,而不是完全控制权。没有理由让IIS拥有设置权限/获取文件所有权/等等的能力。只要2美分…@Tommy ya我现在意识到,我已经做出了改变。谢谢,我已经让VisualStudio以管理员的身份运行,正如您在这里描述的那样。如果IIS_IUSRS具有完全控制权,它仍应工作。错误为UnauthorizedAccessException。您是在调试模式下通过Visual Studio运行此操作还是部署到IIS?我建议在案例II中向IIS_IUSR授予“修改”权限,而不是完全控制。没有理由让IIS拥有设置权限/获取文件所有权/等等的能力。只要2美分…@Tommy ya我现在意识到,我已经做出了改变。谢谢,我已经让VisualStudio以管理员的身份运行,正如您在这里描述的那样。如果IIS_IUSRS具有完全控制权,它仍应工作。错误为UnauthorizedAccessException。您是在调试模式下通过Visual Studio运行此操作,还是部署到IIS?