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

Том Дайкстра (Tom Dykstra)

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

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

Общие сведения

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

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

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

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

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

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

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

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

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

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

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

Вы можете задать разрешения для папки вручную или сделать ее автоматической частью процесса развертывания. Для автоматического выполнения требуется сложный код MSBuild. Так как это необходимо сделать только при первом развертывании, выполните следующие действия, как это сделать вручную. (Сведения о том, как сделать это частью процесса развертывания, см. в разделе Настройка разрешений для папок для веб-публикации в блоге Sayed Hashimi.)

  1. В проводник перейдите в папку C:\inetpub\wwwroot\ContosoUniversity. Щелкните правой кнопкой мыши папку 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.