0

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


注意我有显示必须更改哪个用户图像的网格视图;这个网格视图还可以帮助我找到特定的用户图像文件。

   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 开发服务器之间最重要的区别是什么?
  • 任何更快的方法来创建上传和替换?
  • 有什么更好的形式来拥有这个系统?
4

2 回答 2

1

1)您的代码是正确的

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

3)不知道

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

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

于 2013-08-07T10:11:18.580 回答
0

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

于 2013-08-07T11:25:07.883 回答