Нет доступа к файлам в iis7 mvc app — server 2008 r2

#asp.net #asp.net-mvc #iis #windows-server-2008

#asp.net #asp.net-mvc #iis #windows-server-2008

Вопрос:

Я только что установил Windows Server 2008 r2 вместе с Visual Studio и dropbox. Я использую его как виртуальную машину для разработки, и dropbox помогает мне синхронизировать мои файлы с другими компьютерами.

Я настроил свой сайт в IIS, но при попытке просмотреть сайт получаю сообщение об ошибке «Отказано в доступе». У меня было это раньше, и чтобы обойти это в прошлом, я прошел и добавил учетную запись IIS_User в список разрешений на чтение / изменение файлов. Я предполагаю, что, поскольку файл был скопирован с помощью выпадающего списка, у файлов нет необходимых разрешений. Вот ошибка, я не могу пакетно обновлять файлы, изменяя разрешения для папки, мне приходится делать это прямо на уровне файла и, что еще хуже, по одному за раз! Я не могу этого допустить.

Я относительно новичок в 2008 r2 и IIS 7, поэтому понятия не имею, что здесь происходит. Может ли кто-нибудь объяснить, что происходит, и если есть параметр IIS / file permission, который я могу обновить, чтобы разрешить его в папке верхнего уровня?

Я попытался добавить анонимные разрешения на веб-сайт в IIS и добавил разрешения на папку для IIS_User (даже для всех). У меня есть учетная запись администратора, и она уже настроена так, чтобы разрешать мне читать / записывать / изменять файлы.

Обычно я получаю сообщение «Произошла ошибка при загрузке файла конфигурации: доступ к пути X запрещен».

Это происходит с файлами ascx и aspx, а также с файлами конфигурации.

Изменения: Сайт виден при отладке из Visual Studio. Сайт работает с полным доверием (внутренним)

Пожалуйста, помогите, это мешает мне работать и сводит меня с ума!

Ответ №1:

По умолчанию в IIS 7 веб-сайты запускаются от имени сетевой учетной записи локальной системы (NetworkService), а не от имени IIS_User.

Для проверки в диспетчере IIS выберите соответствующий сайт, нажмите Основные настройки… и проверьте пул приложений, к которому он назначен. Затем перейдите в пулы приложений и проверьте идентификатор для этого пула приложений. Убедитесь, что указанный пользователь указан в списке ACL.

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

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

Надеюсь, это поможет.

Комментарии:

1. Что за ACL — извините, я сказал вам, что я нуб 🙂

2. Я настроил новый AppPool для своего веб-сайта, для идентификатора которого установлено значение ApplicationPoolIdentity — не уверен, что делать дальше. : s

3. Я только что добавил свое имя пользователя / пароль в качестве локального пользователя в пул приложений, и это выполнило работу. По крайней мере, это заставило меня работать, но я был бы не прочь понять, есть ли что-то более «глобальное», что я мог бы использовать в будущем. Сработает ли настройка на NetworkService? Почему не работает ApplicationPoolIdentity? Как сбросить наследование в ACL, который, как я теперь знаю, является списком контроля доступа.

Ответ №2:

Что касается того, будут ли работать другие идентификаторы для вашего пула приложений, это полностью зависит от того, имеют ли эти идентификаторы разрешения на все файлы и / или базы данных и другие ресурсы, к которым ваше приложение должно получить доступ. Прямо сейчас у вас есть приложение, запущенное под вашей учетной записью пользователя, что обычно не рекомендуется. Ваш пароль кэширован в IIS, и если вы измените его, ваше приложение перестанет работать, пока вы не обновите конфигурацию пула приложений.

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

Чтобы проверить и сбросить наследование папки, перейдите в ее свойства, на вкладку безопасность, нажмите Дополнительно, затем нажмите Редактировать. Вы можете увидеть, наследует ли эта папка разрешения от своего родителя, и при необходимости удалить все разрешения для вложенных папок / файлов и включить наследование для всех дочерних папок и файлов.

Надеюсь, это поможет.

Диалоговое окно дополнительных параметров безопасности