C # MVC Доступ к пути запрещен при попытке записи файла - PullRequest
3 голосов
/ 01 октября 2011

У меня есть приложение MVC, в котором пользователи могут загружать файлы.Перед тем как записать загруженный файл, я создаю каталог в соответствии с датой и временем.Я начинаю с C:\ApplicationName и заканчиваю C:\ApplicationName\20111001\Filename.ext, когда загрузка завершена (теоретически).

Моя проблема на моей локальной машине с Windows 7 заключается в том, что я не могу записать файл.

Я получаю исключение "access denied" независимо от того, для какого пользователя я предоставляю полный доступ к каталогу.Странно то, что каталог даты создается просто отлично.

Я предоставил следующим пользователям полный доступ:

  • [Текущий пользователь, вошедший в систему]
  • СЕТЬСЕРВИС
  • IUSR
  • IIS_IUSRS
  • Гости
  • Все

Безуспешно.Я действительно не понимаю, что здесь происходит.Когда я предоставлю всем полный доступ, я смогу создать файл, верно?

PS: я использую Visual Studio 2010 и ASP.NET Development Server прямо из коробки.

Ответы [ 4 ]

1 голос
/ 11 октября 2012

Я не использую IIS, я использую разбавленную версию "ASP.NET Сервер разработки ". Так что я весьма ограничен

Проблема в том, что для записи в каталог файлов из приложения вам нужно будет запустить Visual Studio от имени администратора.

Windows 7 препятствует выходу процесса из своей изолированной программной среды, поскольку он работает с ограниченными правами. Это верно, даже если ваша учетная запись является администратором.

1 голос
/ 02 октября 2011

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

IIS AppPoolIdentity и права доступа на запись в файловой системе

1 голос
/ 01 октября 2011

Проверьте разрешения для родительской папки и убедитесь, что они наследуются, вы можете проверить это в окне дополнительных параметров.

0 голосов
/ 02 октября 2011

Просто у меня была такая же проблема. По умолчанию IIS7 AppPools использует AppPoolIdentity. Просто откройте свои AppPools в IIS Management Console, выберите тот, с которым у вас проблемы, выберите Расширенные настройки и в разделе Модель процесса измените Indentity на Встроенный счет>> 1003 * NetworkService . Поскольку вы уже предоставили доступ к папке NETWORK SERVICE, все должно работать.

...