上传文件:访问被拒绝

时间:2013-08-07 10:05:30

标签: asp.net

我有一个ASP.NET Web表单网站。按下上传按钮时会运行此代码。这段代码有很多问题。它不快速和简单,它有一个大问题。对于第一次图像上传,它工作得很好但是当我想要替换文件时返回Access denied错误。我在IIS Express上有此错误,但它在Visual Studio开发服务器上正常工作。


note 我有网格视图,显示必须更改哪个用户图像;此网格视图还帮助我找到特定的用户图像文件。

   if (UsersImageFileUpload.HasFile && UsersImageFileUpload.PostedFile.ContentType.StartsWith("image"))
    {
        string filename = UploadUsersImageGridView.SelectedRow.Cells[1].Text.ToString();
        if (!File.Exists(Server.MapPath("~/App_Data/Backups/" + filename)))
        {
            UsersImageFileUpload.PostedFile.SaveAs(Server.MapPath("~/App_Data/Users/") + filename);
        }
        else if (File.Exists(Server.MapPath("~/App_Data/Backups/" + filename)))
        {
            File.Delete(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
            UsersImageFileUpload.PostedFile.SaveAs(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
            File.Replace(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"), Server.MapPath("~/App_Data/Users/") + filename, Server.MapPath("~/App_Data/Backups/"));
            File.Delete(Server.MapPath("~/App_Data/Backups/" + filename + " (Replace)"));
        }
    }
}

错误标题 Server Error in '/' Application

错误第二个标题 The process cannot access the file 'D:\Website\App_Data\Users\1-fullname' because it is being used by another process.

错误说明 An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

错误详情 System.IO.IOException: The process cannot access the file 'D:\App_Data\Users\1-fullname' because it is being used by another process


我的问题:

  • 我的代码有什么问题?
  • 为什么IIS返回该错误(拒绝访问文件)?
  • IIS Express 8和Visual Studio 2012开发服务器之间最重要的区别是什么?
  • 创建上传和替换的更快捷方式?
  • 有更好的形式来建立这个系统吗?

2 个答案:

答案 0 :(得分:1)

1)您的代码是正确的

2)可能这是因为您要替换的文件设置为“只读”,更改它并尝试替换它

3)不知道

4)你可以尝试任何自定义上传方法或使用ajax,它会更快但不简单,因为asp.net文件上传

5)我认为这是一个很好的

答案 1 :(得分:0)

试试这个: - 右键单击放置文件的文件夹并提供完全访问权限