Why is access to the path denied?

2019-01-01 02:16发布

I am having a problem where I am trying to delete my file but I get an exception.

if (result == "Success")
{
     if (FileUpload.HasFile)
     {
         try
         {
              File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
              string filename = Path.GetFileName(btnFileUpload.FileName);
              btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
         }
         catch (Exception ex)
         {
               Message(ex.ToString());
         }
      }
}

Also I should note that the folder I am trying to delete from has full control to network services.

The full exception message is:

System.UnauthorizedAccessException: Access to the path 'C:\Users\gowdyn\Documents\Visual Studio 2008\Projects\hybrid\hybrid\temp_loginimages\enviromental.jpg' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.Delete(String path) at hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click(Object sender, EventArgs e) in C:\Users\gowdyn\Documents\Visual Studio 2008\Projects\hybrid\hybrid\User_Controls\Imgloader_Add_Edit_Tbl.ascx.cs:line 242

Any ideas?

23条回答
路过你的时光
2楼-- · 2019-01-01 02:33

When a user tries to connect to your Web site, IIS assigns the connection to the IUSER_ComputerName account, where ComputerName is the name of the server on which IIS is running. By default, the IUSER_ComputerName account is a member of the Guests group. This group has security restrictions. Try to grand access to IUSER_ComputerName to that folder

Here is very good described answer about IIS security

Hope this helps

查看更多
不再属于我。
3楼-- · 2019-01-01 02:33

Right click on Visual studio and click Run as Administrator

查看更多
看淡一切
4楼-- · 2019-01-01 02:35

I got the error because I didn't realize that the destination should be a file. I had a folder as the second parameter (which works in cmd). and I got Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied. because C# File.Move wants a file there, not just for the first parameter, but for the second too, and so if you put a directory as second parameter, it's trying to write a file like c:\crp when you have a directory called c:\crp.

this would be incorrect File.Move(args[0],"c:\\crp");

So, this would be correct File.Move(args[0],"c:\\crp\\a.a");

The same goes for File.Copy

查看更多
无与为乐者.
5楼-- · 2019-01-01 02:37

I have also faced this issue when my window service started throwing the exception

System.UnauthorizedAccessException: Access to the path "C:\\Order\\Media
44aa4857-3bac-4a18-a307-820450361662.mp4" is denied.

So as a solution, I checked the user account associated with my service, as shown in below screen capture

enter image description here

So in my case it was NETWORK SERVICE

And then went to the folder properties to check if the associated user account also exists under their permission tab. It was missing in my case and when I added it and it fixed my issue.

For more information please check the below screen capture

enter image description here

查看更多
无与为乐者.
6楼-- · 2019-01-01 02:37

same issue for me too, I was pointing the folder instead of file.

so make sure in path, give path+filename

System.IO.File.WriteAllBytes("path", bytearray);
查看更多
不流泪的眼
7楼-- · 2019-01-01 02:38

If this is an IIS website that is having the problem, check the Identity property of the advanced settings for the application pool that the site or application uses. You may find that it is set to ApplicationPoolIdentity, and in that case then this is the user that will have to have access to the path.

Or you can go old style and simply set the Identity to Network Service, and give the Network Service user access to the path.

查看更多
登录 后发表回答