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

C#asp.net.Netasp.net 4.0Windows Server-2008-R2

C# Problem Overview


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

C# Solutions


Solution 1 - C#

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

IIS_IUSRS

that's it.

Solution 2 - C#

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 3 - C#

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 - C#

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 - C#

I faced this problem once and in my case the soln is to close any process in the task manager that uses/accesses that file.

Solution 6 - C#

Have you looked under Advanced Security Settings?

something like below image change permissions of folder to IIS_IUSRS

enter image description here

Solution 7 - C#

I know this is late to the game, but I wanted to share in case it helps someone.

Your exact situation may not apply, however I had a similar situation and setting the File attribute helped.

Try to set the File attribute to Normal:

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

I hope this helps someone.

Solution 8 - C#

Verify what are you attempting to write. I was having the same issue, but I realized i was trying to write a byte array with length of 0.

It doesn't make sense to me, but I get: "Access to the path "

Solution 9 - C#

Go to root folder

Right Click, click on Properties

Choose Tab Security

Click on Edit

Click on Add

Type 'EveryOne'

Click OK

Check Out Full Control

Click OK

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHassan MokdadView Question on Stackoverflow
Solution 1 - C#UMAR-MOBITSOLUTIONSView Answer on Stackoverflow
Solution 2 - C#Damian DrygielView Answer on Stackoverflow
Solution 3 - C#Ivan Sander de JongView Answer on Stackoverflow
Solution 4 - C#ShaakirView Answer on Stackoverflow
Solution 5 - C#user6243946View Answer on Stackoverflow
Solution 6 - C#AdhikView Answer on Stackoverflow
Solution 7 - C#Spencer SullivanView Answer on Stackoverflow
Solution 8 - C#Pavel QuevedoView Answer on Stackoverflow
Solution 9 - C#Lalit KhannaView Answer on Stackoverflow