Возможные причины для выброса Directory.CreateDirectory UnauthorizedAccessException на общем хосте - PullRequest
5 голосов
/ 29 декабря 2010

В настоящее время я работаю над приложением ASP.NET 3.5 / IIS7, для которого я использую WinHost в качестве среды временного хостинга.У меня есть некоторые драмы с тем, что я считаю проблемами с разрешениями, и процесс продажи билетов только что достиг стадии «Вы на своем».

Вот что я пытаюсь сделать:

var dir = Server.MapPath("~/MyFolder/NewPath");
Directory.CreateDirectory(dir);

И вот ответ, который я получаю:

Доступ к пути 'E: \ web \ MyAccount \ MyFolder \ NewPath' запрещен.

Описание: Anнеобработанное исключение произошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.UnauthorizedAccessException: Доступ к пути 'E: \ web \ MyAccount \ MyFolder \ NewPath' запрещен.

Трассировка стека показывает сбой строки CreateDirectory.Приложение работает нормально локально, и удостоверение, под которым запускается пул приложений, имеет доступ на запись к пути «MyFolder».В обеих средах уровень доверия установлен на «Полный».

Руководство от WinHost:

По умолчанию пользователь asp.net имеет полные разрешения для вашего сайта.

Более подробно, WindowsIndentity.GetCurrent (). Name возвращает «W02 \ aspnet_17884», который, по-видимому, является идентификатором учетной записи.Мне кажется, что эта учетная запись не имеет доступа для записи в файловую систему приложения, но когда я запросил WinHost, я получил:

Проблема, с которой вы столкнулись, связана с конфигурацией вашего приложения..

и

Я бы порекомендовал вам зарегистрироваться и опубликовать свой вопрос на форуме сообщества DiscountASP.NET

КакойОчевидно, поэтому вопрос теперь стоит о переполнении стека:)

Может кто-нибудь предложить какие-либо изменения конфигурации уровня приложения?Скорее всего, это проблема с разрешениями на хостинге?Спасибо.

Обновление: я также поставил вопрос на форуме WinHost .

Ответы [ 2 ]

4 голосов
/ 30 декабря 2010

И ответ ... веб-развертывание сломало его.На самом деле, ответ заключается в том, что разрешения просто не было (как и ожидалось), но причина, по-видимому, в том, что веб-развертывание каким-то образом удалило разрешения на запись.Я могу видеть это с точки зрения веб-развертывания, имеющего возможность публиковать списки ACL, но почему WinHost позволяет этому манипулировать разрешениями каталога, содержащего веб-сайт, я не знаю.

Дополнительная информация по моему вопросу (и WinHostответ), находится на их форуме под темой Нет прав на запись в файловую систему .

0 голосов
/ 29 декабря 2010

Да, у "W02 \ aspnet_17884" должно быть достаточно прав для создания папки.Я бы предложил вам создать бесплатную учетную запись на ASPSPIDER и загрузить туда очень простой пример с конфигурацией, аналогичной вашей.Если это работает там, а не на WinHost, вы можете показать им, как это работает на aspspider, но не на их сервере.Затем заставьте их разрешить или получить новый хост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...