Geeman1111 Ответов: 2

Как обойти проблему отказа в доступе при загрузке изображения из веб-приложения?


Я создал приложение с удаленной базой данных MySql. Когда я запускаю проект на localhost, все работает нормально.
Как только я публикую проект и тестирую веб-сайт, я постоянно получаю ошибку отказа в доступе, когда пытаюсь загрузить изображение.

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();



Затем я получаю следующую ошибку::

<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


Что я уже пробовал:

Я уже проверил права доступа к папкам, даже на FTP-сайте, только потому, что у меня заканчивались ответы. Я был на стольких форумах и вопросах и ответах, но я просто не нахожу того, что мне не хватает.

2 Ответов

Рейтинг:
2

Wastedtalent

Вы проверили разрешения для счета, который ASP.NET/IIS неужели бежит под водой?


Geeman1111

Будет ли это включать папку wwwroot на хосте через FTP?

Geeman1111

Я проверил IIS проверку подлинности и меняется на включено Анон.
Однако этот сайт находится не на моем IIS. это папка, которая переходит в FTP.
Добавлено в IIS. все та же ошибка.

Я могу зайти на сайт, просмотреть все, просмотреть изображения, которые есть в базе данных.

Просто загруженное изображение... доступ запрещен.

Wastedtalent

Есть ли учетная запись, под которой работает пул приложений в IIS
иметь доступ на запись к E:\www\premileh\website\wwwroot\upload\

Geeman1111

Да. Сервисная Сеть Позволяют

Geeman1111

Не используя IIS

Рейтинг:
1

CHill60

Вы должны помнить, что при работе на localhost это буквально ваша машина, которая действует как сервер. Однако в IIS это фактический удаленный сервер, к которому все относится.

Таким образом, какая бы учетная запись ни была на сервере, она не только должна иметь доступ к тому, что вы знаете как "E:\www\website\website\wwwroot\upload\Image-01.jpg" он должен точно знать, где находится "E:\". то есть у него должен быть сопоставлен электронный диск.

Если вы абсолютно уверены, что разрешения были правильно настроены, попробуйте заменить IP-адрес и имя общего ресурса на "E:\"


Member 12192819

Я должен указать, что в "сохранить как" то, а?

CHill60

Попробовать это.

Geeman1111

Не используя IIS.

CHill60

Независимо от того, что вы используете, путь должен быть относительно сервера, на котором размещается ваш сайт.