powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET не имеет права обращаться к запрошенному ресурсу
8 сообщений из 8, страница 1 из 1
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691269
Поляна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Запускаю на локальном компьютере сайт, который при нажатии на кнопку должен сохранять файл на диск C с помощью элемента FileUpload. Код простейший:
Код: c#
1.
2.
3.
4.
5.
6.
7.
protected void Button1_Click(object sender, EventArgs e)
    {
        string uploadsDirVar = @"C:\TEST";
        
        FileUpload1.SaveAs(uploadsDirVar);
        
    }



При нажатии на кнопку получаю:

Отказано в доступе по пути "C:\TEST".
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.UnauthorizedAccessException: Отказано в доступе по пути "C:\TEST".

ASP.NET не имеет права обращаться к запрошенному ресурсу. Рекомендуется предоставить идентификатору запроса ASP.NET права доступа к этому ресурсу. ASP.NET имеет базовый идентификатор процесса (обычно {MACHINE}\ASPNET для IIS 5 или Network Service на IIS 6), который используется, если приложение не олицетворяется. Если приложение олицетворяется через задание <identity impersonate="true"/>, идентификатором будет служить идентификатор анонимного пользователя (обычно IUSR_MACHINENAME) или идентификатор пользователя запроса с проверенной подлинностью.

Для предоставления ASP.NET прав на запись в файл, щелкните на файле правой кнопкой мыши в окне "Проводник", выберите "Свойства", затем вкладку "Безопасность". Выберите "Добавить" для добавления соответствующего пользователя или группы. Выделите учетную запись ASP.NET и установите флажки для требуемых прав доступа.

Ошибка источника:



Строка 26:
Строка 27: FileUpload1.SaveAs(uploadsDirVar);
Строка 28:
Строка 29: }


Исходный файл: c:\inetpub\wwwroot\wwwrootTest\Test.aspx.cs Строка: 27

Трассировка стека:


[UnauthorizedAccessException: Отказано в доступе по пути "C:\TEST".]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +7716339
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) +1162
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) +61
System.IO.FileStream..ctor(String path, FileMode mode) +55
System.Web.HttpPostedFile.SaveAs(String filename) +95
System.Web.UI.WebControls.FileUpload.SaveAs(String filename) +25
Default2.Button1_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\wwwrootTest\Test.aspx.cs:27
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +78
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +100
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2863




--------------------------------------------------------------------------------
Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.5420; ASP.NET, версия:2.0.50727.5420



Вроде, все понятно, но в WINDOWS 7 не нахожу юзера aspnet.
В итоге упорной борьбы и поиска по форумам было проделано следущее:
1. Задание <identity impersonate="true"/>, и, соответственно, предоставление прав на запись в папку юзеру IUSR (юзер IUSR_имя моего компьютера у меня не нашелся) - не помогло
2. Предоставление прав доступа на запись в папку юзеру NETWORK SERVICE - не помогло.
3. Пыталась выяснить, под какой учетной записью запускается мое приложение, но в AppPool тоже не нашла об этом информации.

Нид хелп!
Заранее спасибо!
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691323
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. IIS_IUSRS
2. Попробуйте дать права просто всем пользователям писать в корень (нахера в корень системного диска писать? вы еще в \windows\system32\ напишите )
3. Запускайте пул от имени админи или конкретного пользователя, который имеет права на запись в корень
4. измените ваш "простейший" код :
Код: c#
1.
string uploadsDirVar = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "\\test.ext";
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691411
Поляна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanSYS, несмотря на Ваш недружественный тон, все-равно спасибо!
Не думала, что проблема реально может быть в том, что пишу файл в корень...Однако же! Вопрос снят!
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691529
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поляна, в Wibdows 7 каждый пул приложений, по умолчанию, запускается от специаильной учетной записью ApplicationPoolIdentity. Именно этой учетной записи следует давать права. Подробно это описано в статье Application Pool Identities .

Полянано в WINDOWS 7 не нахожу юзера aspnet.
Забудьте про него. Он был нужен только на под WinXP, а точнее на под IIS 5.x где не было пулов приложений.

Поляна1. Задание <identity impersonate="true"/>, и, соответственно, предоставление прав на запись в папку юзеру IUSR (юзер IUSR_имя моего компьютера у меня не нашелся) - не помогло
Не стоит использовать имперсонификацию ради попытки решить проблемы с правами. Это можно решить и без нее. Пользователи IUSR это тоже "старое" решение.

Поляна2. Предоставление прав доступа на запись в папку юзеру NETWORK SERVICE - не помогло.
Учетная запись NETWORK SERVICE использовалась в IIS 6. В IIS 7 лучше использовать ApplicationPoolIdentity так она легко позволяет изолировать разные пулы приложений.

Поляна3. Пыталась выяснить, под какой учетной записью запускается мое приложение, но в AppPool тоже не нашла об этом информации.
http://learn.iis.net/Content_Cache/624/appPoolid1.png

SanSYS1. IIS_IUSRS
Уточнение - это метод для IIS 5 и 6.

SanSYS3. Запускайте пул от имени админи или конкретного пользователя, который имеет права на запись в корень
Только не от администратора. Приложение следует разрабатывать и тестировать с использованием ограниченнной учетной записи, а то позже при деплойменте приложения могут начаться "неожиданные" проблемы.
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691912
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile
SanSYS3. Запускайте пул от имени админи или конкретного пользователя, который имеет права на запись в корень
Только не от администратора. Приложение следует разрабатывать и тестировать с использованием ограниченнной учетной записи, а то позже при деплойменте приложения могут начаться "неожиданные" проблемы.

Да.. но все те же проблемы с правами, не более )
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691915
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПолянаSanSYS, несмотря на Ваш недружественный тон, все-равно спасибо!
Не думала, что проблема реально может быть в том, что пишу файл в корень...Однако же! Вопрос снят!

Сорри, не хотел показаться грубым
...
Рейтинг: 0 / 0
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #37691997
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSДа.. но все те же проблемы с правами, не более )
Безусловно. Которые, как показывает практика, решаются запуском приложения под учетной записью администратора.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ASP.NET не имеет права обращаться к запрошенному ресурсу
    #39579541
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asp mvc 5 на локале (iis express, все права) в папку App_Data норм добавляло файлы:

Код: c#
1.
 System.IO.File.AppendAllText(Server.MapPath("~/App_Data  /UserSites/" + SiteModel.SiteName), JsonConvert.SerializeObject(SJ));



а вот в папку "Content" та же ошибка.

Решением оказалось добавление расширения:

Код: c#
1.
 System.IO.File.AppendAllText(Server.MapPath("~/Content/UserSites/" + SiteModel.SiteName + ".dat"), JsonConvert.SerializeObject(SJ));
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET не имеет права обращаться к запрошенному ресурсу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]