Click here to Skip to main content
15,885,216 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
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.

C#
connection.Open();
string filePath =
Path.GetFileName(oFile.PostedFile.FileName.ToString());
string uploadPath = Server.MapPath("~/upload");
oFile.PostedFile.SaveAs(Path.Combine(uploadPath,
oFile.PostedFile.FileName));

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



I then get the following error::

<pre lang="HTML">Access to the path 'E:\www\website\website\wwwroot\upload\Image-01.jpg' is 
denied.
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 
 'E:\www\website\website\wwwroot\upload\Image-01.jpg' 
 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 
'E:\www\premileh\website\wwwroot\upload\Image-01.jpg' 
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
application.ItemUploadPage.ImageUploader()in
C:\Users\folder\folder\folder\folder\folder\folder\folder\folder.aspx.cs:133
app.apppage.UploadBtn_Click(Object sender, EventArgs e) 
\Users\folder\folder\folder\folder\folder\folder\app
\ItemUploadPage.aspx.cs:97
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11758848
System.Web.UI.WebControls.Button.RaisePostBackEvent(String 
eventArgument)+150
System.Web.UI.Page.ProcessRequestMain(Boolean 
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.
Posted
Updated 29-Jan-19 3:05am

Have you checked the permisisons for the account that ASP.NET/IIS is running under?
 
Share this answer
 
Comments
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
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:\"
 
Share this answer
 
Comments
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)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900