ASP.NET веб-развертывание с помощью Visual Studio: Настройка разрешений для папки

от Tom Dykstra)

Скачать начальный проект

В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET в веб-приложениях службы приложений Azure или поставщике услуг размещения стороннего поставщика с помощью Visual Studio 2012 или Visual Studio 2010. Сведения о ряде см. в первом руководстве по ряду.

Обзор

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

При тестировании веб-приложения в Visual Studio с помощью Visual Studio Development Server (Cassini) или IIS Express приложение выполняется под вашим удостоверением. Вы, скорее всего, являетесь администратором на компьютере разработчика и имеете полный доступ к любому файлу в любой папке. Но если приложение выполняется в службах IIS, оно выполняется под удостоверением, определенным для пула приложений, которому назначен сайт. Обычно это определяемая системой учетная запись с ограниченными разрешениями. По умолчанию он имеет разрешения на чтение и выполнение для файлов и папок вашего веб-приложения, но у него нет доступа на запись.

Это становится проблемой, если приложение создает или обновляет файлы, что является общей потребностью в веб-приложениях. В приложении университета Contoso ELMAH создает XML-файлы в папке ELMAH , чтобы сохранить сведения об ошибках. Даже если вы не используете что-либо вроде ELMAH, ваш сайт может позволить пользователям отправлять файлы или выполнять другие задачи, которые записывают данные в папку на сайте.

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

Тестирование ведения журнала ошибок и отчетов

Чтобы увидеть, как приложение работает неправильно в службах IIS (хотя это было сделано при тестировании в Visual Studio), можно вызвать ошибку, которая обычно заносится в журнал ELMAH, а затем открыть в журнале ошибок ELMAH, чтобы просмотреть подробные сведения. Если ELMAH не удалось создать XML-файл и сохранить сведения об ошибке, отобразится пустой отчет об ошибках.

Откройте браузер и перейдите в http://localhost/ContosoUniversity, а затем запросите недопустимый URL-адрес, например студентскскскс. aspx. Вместо страницы женерицеррорпаже. aspx отображается созданная системой страница ошибки, так как параметр customErrors в файле Web. config имеет значение "RemoteOnly" и локально выполняются службы IIS:

Страница ошибок HTTP 404

Теперь запустите ELMAH. axd , чтобы просмотреть отчет об ошибках. После входа в систему с учетными данными администратора ("Admin" и "девпвд") отображается пустая страница журнала ошибок, так как ELMAH не удалось создать XML-файл в папке ELMAH :

Журнал ошибок пуст

Установка разрешения на запись в папку ELMAH

Разрешения для папки можно задать вручную или сделать автоматически частью процесса развертывания. Чтобы сделать его автоматическим, требуется сложный код MSBuild, и поскольку это необходимо сделать только при первом развертывании, выполните следующие действия, как это сделать вручную. (Сведения о том, как сделать эту часть процесса развертывания, см. в разделе Установка разрешений папки для веб-публикации в блоге Саид Хашими.)

  1. В проводникеперейдите по адресу к:\инетпуб\ввврут\контосауниверсити. Щелкните правой кнопкой мыши папку ELMAH , выберите пункт свойства, а затем перейдите на вкладку Безопасность .

  2. Нажмите кнопку Изменить.

  3. В диалоговом окне разрешения для ELMAH выберите DefaultAppPool, а затем установите флажок записать в столбце Разрешить .

    Разрешения для папки ELMAH

    (Если вы не видите DefaultAppPool в списке имен групп или пользователей , вероятно, вы использовали другой метод, отличный от указанного в этом руководстве, для настройки IIS и ASP.NET 4 на компьютере. В этом случае выясните, какое удостоверение используется пулом приложений, назначенным приложению университета Contoso, и предоставьте ему разрешение на запись. См. ссылки о удостоверениях пула приложений в конце этого руководства.) Нажмите кнопку ОК в обоих диалоговых окнах.

Повторное тестирование ведения журнала ошибок и отчетов

Протестируйте, вызывая ошибку повторно тем же способом (запросите неверный URL-адрес) и запустите страницу журнал ошибок . На этот раз ошибка появляется на странице.

Страница журнала ошибок ELMAH

Сводка

Вы выполнили все задачи, необходимые для правильной работы университета Contoso в службах IIS на локальном компьютере. В следующем руководстве вы сделаете сайт общедоступным, развернув его в Azure.

Дополнительные сведения

В этом примере, причина, по которой ELMAH не удалось сохранить файлы журнала, достаточно очевидна. Трассировку IIS можно использовать в случаях, когда причина проблемы не настолько очевидна; см. раздел Устранение неполадок с неудачными запросами с помощью трассировки в IIS 7 на сайте IIS.NET.

Дополнительные сведения о том, как предоставить разрешения удостоверениям пула приложений, см. в разделе удостоверения пула приложений и Защита содержимого в IIS с помощью списков управления доступом файловой системы на сайте IIS.NET.