Развертывание веб-приложения ASP.NET с помощью SQL Server Compact с помощью Visual Studio или Visual Web Developer: настройка разрешений для папок — 6 из 12

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

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

В этой серии руководств показано, как развернуть (опубликовать) проект веб-приложения ASP.NET, включающий базу данных SQL Server Compact, с помощью версии-кандидата Visual Studio 2012 или Visual Studio Express 2012 RC for Web. Вы также можете использовать Visual Studio 2010 при установке обновления веб-публикации. Общие сведения о серии см. в первом руководстве этой серии.

Руководство по функциям развертывания, появившиеся после выпуска версии-кандидата Visual Studio 2012, развертывание SQL Server выпусков, отличных от SQL Server Compact, а также развертывание в Служба приложений Azure веб-приложения, см. в статье ASP.NET веб-развертывание с помощью Visual Studio.

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

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

При тестировании веб-приложения в Visual Studio с помощью сервера разработки Visual Studio (Cassini) приложение запускается под вашим удостоверением. Скорее всего, вы являетесь администратором на компьютере разработки и имеете полные права на любые действия с любым файлом в любой папке. Но когда приложение выполняется в 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 выполняются локально:

Error_page_Test

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

Error_log_page_empty

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

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

В Windows Обозреватель перейдите в папку C:\inetpub\wwwroot\ContosoUniversity. Щелкните правой кнопкой мыши папку Elmah , выберите Свойства, а затем перейдите на вкладку Безопасность .

Elmah_folder_Properties_Security_tab

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

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

Permissions_for_Elmah_dialog_box

Нажмите кнопку ОК в обоих диалоговых окнах.

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

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

Elmah_Error_Log_page_Test

Кроме того, требуется разрешение на запись в папку App_Data, так как в ней есть SQL Server Compact файлы базы данных, и вы хотите иметь возможность обновлять данные в этих базах данных. Однако в этом случае вам не нужно делать никаких дополнительных действий, так как процесс развертывания автоматически устанавливает разрешение на запись в папку App_Data .

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

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

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

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