Click here to Skip to main content
14,028,096 members
Rate this:
Please Sign up or sign in to vote.
I have created an application with a remote MySql database. When i run the project on the localhost, everything works fine.
Once I publish the project, and test the website, I keep getting an access denied error when i try to upload an image.

string filePath =
string uploadPath = Server.MapPath("~/upload");

string sql = "INSERT INTO `database`.`table` (image) VALUES (@file)";
using (var cmd = new MySqlCommand(sql, connection))
    cmd.Parameters.AddWithValue("@file", File.ReadAllBytes(uploadPath
     + "\\" + filePath));

I then get the following error::

<pre lang="HTML">Access to the path 'E:\www\website\website\wwwroot\upload\Image-01.jpg' is 
Description: 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. 

 Exception Details: System.UnauthorizedAccessException: Access to the path 
 is denied. 

ASP.NET is not authorized to access the requested resource. Consider 
granting access rights to the resource to the ASP.NET request identity. 
ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or 
Network Service on IIS 6 and IIS 7, and the configured application pool 
identity on IIS 7.5) that is used if the application is not impersonating. 
If the application is impersonating via , the 
identity will be the anonymous user (typically IUSR_MACHINENAME) or the 
authenticated request user. 

To grant ASP.NET access to a file, right-click the file in File Explorer, 
choose "Properties" and select the Security tab. Click "Add" to add the 
appropriate user or group. Highlight the ASP.NET account, and check the 
boxes for the desired access.

Source Error: 

An unhandled exception was generated during the execution of the current web 
request. Information regarding the origin and location of the exception can 
be identified using the exception stack trace below.

Stack Trace: 
[UnauthorizedAccessException: Access to the path 
is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +417
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, 
Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, 
FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean 
bFromProxy, Boolean useLongPath, Boolean checkHost) +1217
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, 
FileShare share, Int32 bufferSize, FileOptions options, String msgPath, 
Boolean bFromProxy) +130
System.IO.FileStream..ctor(String path, FileMode mode) +97
System.Web.HttpPostedFile.SaveAs(String filename) +96
app.apppage.UploadBtn_Click(Object sender, EventArgs e) 
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11758848
includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +5028

What I have tried:

I have already gone over the folder permissions, even on the FTP site, just because I was running out of answers. I have been on so many forums and Q&A but I am just not finding what I am missing.
Updated 29-Jan-19 3:05am
Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Have you checked the permisisons for the account that ASP.NET/IIS is running under?
Geeman1111 29-Jan-19 7:04am
Will this include the wwwroot folder on the host through the FTP?
Geeman1111 29-Jan-19 7:26am
I have checked the IIS authentication and changed to enabled for anon.
However, this site is not on my IIS. its a folder that goes into an FTP.
Added to IIS. still giving the same error.

I can access the site, view everything, view the images that are in the database.

Just the upload image... access denied.
Wastedtalent 29-Jan-19 8:19am
Does the account the application pool is running under in IIS have
have write access to E:\www\premileh\website\wwwroot\upload\
Geeman1111 29-Jan-19 8:40am
Yes. Newtwork Service Allow
Geeman1111 31-Jan-19 6:38am
Not using IIS
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

You have to remember when running on localhost it is literally your machine that is acting as the server. However under IIS it is the actual remote server that everything is relative to.

So whichever account is on the server not only has to have access to what you know as "E:\www\website\website\wwwroot\upload\Image-01.jpg" it needs to know specifically where "E:\" is. I.e. it has to have an E-Drive mapped.

If you are absolutely sure that permissions have been properly set up try substituting the IP-Address and the share name for "E:\"
Member 12192819 29-Jan-19 11:39am
Should I specify that in the SaveAs then as well?
CHill60 29-Jan-19 12:38pm
Try it.
Geeman1111 31-Jan-19 6:38am
Not using IIS.
CHill60 31-Jan-19 8:03am
Whatever you are using, the path has to be relative to the server that is hosting your website.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Cookies | Terms of Service
Web03 | 2.8.190419.4 | Last Updated 29 Jan 2019
Copyright © CodeProject, 1999-2019
All Rights Reserved.
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100