ASP.net Getting the error "Access to the path is denied." while trying to upload files to my Windows Server 2008 R2 Web server

170,451

Solution 1

Your asp.net account {MACHINE}\ASPNET does not have write access to that location. That is the reason why its failing.

Consider granting access rights to the resource to the ASP.NET request identity.

Right click on downloading folder Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names Check the boxes for the desired access (Full Control). If it will not work for you do the same with Network Service

Now this should show your local {MACHINENAME}\ASPNET account, then you set the write permission to this account.

Otherwise if the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.


Or just use dedicated location for storing files in ASP.NET which is App_Data. To create it right click on your ASP.NET Project (in Visual Studio) Add > Add ASP.NET Folder > App_Data. Then you'll be able to save data to this location:

var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");

Solution 2

Right click on your folder on your server or local machine and give full permissions to

IIS_IUSRS

that's it.

Solution 3

the problem might be that networkservice has no read rights

salution:

rightclick your upload folder -> poperty's -> security ->Edit -> add -> type :NETWORK SERVICE -> check box full control allow-> press ok or apply

Solution 4

If anyone stumbles across this as it is the first result in google,

remember to specify the filename too in the SaveAs method.

Won't work

file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation));

You need this:

filename = Path.GetFileName(file_upload.PostedFile.FileName);
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename));

I assumed the SaveAs method will automatically use the filename uploaded. Kept getting "Access denied" error. Not very descriptive of the actual problem

Solution 5

Have you looked under Advanced Security Settings?

something like below image change permissions of folder to IIS_IUSRS

enter image description here

Share:
170,451
Hassan Mokdad
Author by

Hassan Mokdad

Updated on July 09, 2022

Comments

  • Hassan Mokdad
    Hassan Mokdad almost 2 years

    I have an asp.net webapplication that uploads files to a specific folder on the Web server. locally everything works fine, but when I deploy the application to the Webserver, I begin getting the error "Access to the path "D:\Attachments\myfile.doc" is denied". I gave the "IIS AppPool" user that the application is running under full permission on the folder. I even gave "Everyone" full permissions, but with the same error.

    I added the folder to the Exceptions list of the Antivirus, but with the same result. I am begining to suspect that maybe Windows Server 2008 R2 needs a trick for my upload to work. I really appreciate your help.

    Thanks

  • Hassan Mokdad
    Hassan Mokdad over 10 years
    Thanks Damian, I didn't try this yesterday at the server. I will have access to the server again on sunday morning, then i will test and get back to you if it worked, Thanks again :)
  • Hassan Mokdad
    Hassan Mokdad over 10 years
    I tried it on my local machine but couldn't find the account ASPNET on my local machine
  • Hassan Mokdad
    Hassan Mokdad over 10 years
    Dear Damian, I couldn't find the user named "ASPNet" on the local machine, also setting the location to AppData didn't work :(
  • Hassan Mokdad
    Hassan Mokdad over 10 years
    It worked after i gave IIS AppPool\DefaultAppPool wirte permissions over the App_Data folder. It also worked when i gave the "Network Service" permissions on the folder
  • IrishChieftain
    IrishChieftain almost 10 years
    I've just spent hours on this and it turned out that the path was wrong - exact same error!
  • Aki
    Aki over 8 years
    Useful if unable to get IIS_IUSRS
  • twip
    twip about 7 years
    Not a helpful error message for this behavior at all. Thanks!
  • thewaywewere
    thewaywewere almost 7 years
    Welcome to SO. Please read this how-to-answer and follow the guideline there to provide quality answer.
  • QMaster
    QMaster almost 6 years
    After checking of increasing permissions of Network Service this worked for me, Thanks.
  • Raghav
    Raghav almost 6 years
    We should have disable Firewall too along with giving machine name password to everyone.
  • Spencer Sullivan
    Spencer Sullivan about 5 years
    @SRoy - Are you trying to write to App_Data or some other path?
  • Spencer Sullivan
    Spencer Sullivan about 5 years
    Giving Everyone full control is NEVER the answer.
  • HABJAN
    HABJAN over 3 years
    Thank you for this, I've been pulling my hair out for 3 hours.
  • Scott Wilson
    Scott Wilson about 3 years
    @IrishChieftain same thing got me too.