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

от Tom Dykstra)by Tom Dykstra

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

В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET в веб-приложениях службы приложений Azure или поставщике услуг размещения стороннего поставщика с помощью Visual Studio 2012 или Visual Studio 2010.This tutorial series shows you how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider, by using Visual Studio 2012 or Visual Studio 2010. Сведения о ряде см. в первом руководстве по ряду.For information about the series, see the first tutorial in the series.

ОбзорOverview

В этом руководстве вы задаете разрешения для папки ELMAH на развернутом веб-сайте, чтобы приложение могла создавать файлы журналов в этой папке.In this tutorial, you set folder permissions for the Elmah folder in the deployed web site so that the application can create log files in that folder.

При тестировании веб-приложения в Visual Studio с помощью Visual Studio Development Server (Cassini) или IIS Express приложение выполняется под вашим удостоверением.When you test a web application in Visual Studio using the Visual Studio Development Server (Cassini) or IIS Express, the application runs under your identity. Вы, скорее всего, являетесь администратором на компьютере разработчика и имеете полный доступ к любому файлу в любой папке.You are most likely an administrator on your development computer and have full authority to do anything to any file in any folder. Но если приложение выполняется в службах IIS, оно выполняется под удостоверением, определенным для пула приложений, которому назначен сайт.But when an application runs under IIS, it runs under the identity defined for the application pool that the site is assigned to. Обычно это определяемая системой учетная запись с ограниченными разрешениями.This is typically a system-defined account that has limited permissions. По умолчанию он имеет разрешения на чтение и выполнение для файлов и папок вашего веб-приложения, но у него нет доступа на запись.By default it has read and execute permissions on your web application's files and folders, but it doesn't have write access.

Это становится проблемой, если приложение создает или обновляет файлы, что является общей потребностью в веб-приложениях.This becomes an issue if your application creates or updates files, which is a common need in web applications. В приложении университета Contoso ELMAH создает XML-файлы в папке ELMAH , чтобы сохранить сведения об ошибках.In the Contoso University application, Elmah creates XML files in the Elmah folder in order to save details about errors. Даже если вы не используете что-либо вроде ELMAH, ваш сайт может позволить пользователям отправлять файлы или выполнять другие задачи, которые записывают данные в папку на сайте.Even if you don't use something like Elmah, your site might let users upload files or perform other tasks that write data to a folder in your site.

Напоминание. Если вы получаете сообщение об ошибке или что-то не работает при работе с этим руководством, обязательно ознакомьтесь со страницей устранения неполадок.Reminder: If you get an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

Тестирование ведения журнала ошибок и отчетовTest error logging and reporting

Чтобы увидеть, как приложение работает неправильно в службах IIS (хотя это было сделано при тестировании в Visual Studio), можно вызвать ошибку, которая обычно заносится в журнал ELMAH, а затем открыть в журнале ошибок ELMAH, чтобы просмотреть подробные сведения.To see how the application doesn't work correctly in IIS (although it did when you tested it in Visual Studio), you can cause an error that would normally be logged by Elmah, and then open the Elmah error log to see the details. Если ELMAH не удалось создать XML-файл и сохранить сведения об ошибке, отобразится пустой отчет об ошибках.If Elmah was unable to create an XML file and store the error details, you see an empty error report.

Откройте браузер и перейдите в http://localhost/ContosoUniversity, а затем запросите недопустимый URL-адрес, например студентскскскс. aspx.Open a browser and go to http://localhost/ContosoUniversity, and then request an invalid URL like Studentsxxx.aspx. Вместо страницы женерицеррорпаже. aspx отображается созданная системой страница ошибки, так как параметр customErrors в файле Web. config имеет значение "RemoteOnly" и локально выполняются службы IIS:You see a system-generated error page instead of the GenericErrorPage.aspx page because the customErrors setting in the Web.config file is "RemoteOnly" and you are running IIS locally:

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

Теперь запустите ELMAH. axd , чтобы просмотреть отчет об ошибках.Now run Elmah.axd to see the error report. После входа в систему с учетными данными администратора ("Admin" и "девпвд") отображается пустая страница журнала ошибок, так как ELMAH не удалось создать XML-файл в папке ELMAH :After you log in with the administrator account credentials ("admin" and "devpwd"), you see an empty error log page because Elmah was unable to create an XML file in the Elmah folder:

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

Установка разрешения на запись в папку ELMAHSet write permission on the Elmah folder

Разрешения для папки можно задать вручную или сделать автоматически частью процесса развертывания.You can set folder permissions manually or you can make it an automatic part of the deployment process. Чтобы сделать его автоматическим, требуется сложный код MSBuild, и поскольку это необходимо сделать только при первом развертывании, выполните следующие действия, как это сделать вручную.Making it automatic requires complex MSBuild code, and since you only have to do this the first time you deploy, the following steps how to do it manually. (Сведения о том, как сделать эту часть процесса развертывания, см. в разделе Установка разрешений папки для веб-публикации в блоге Саид Хашими.)(For information about how to make this part of the deployment process, see Setting Folder Permissions on Web Publish on Sayed Hashimi's blog.)

  1. В проводникеперейдите по адресу к:\инетпуб\ввврут\контосауниверсити.In File Explorer, navigate to C:\inetpub\wwwroot\ContosoUniversity. Щелкните правой кнопкой мыши папку ELMAH , выберите пункт свойства, а затем перейдите на вкладку Безопасность .Right-click the Elmah folder, select Properties, and then select the Security tab.

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

  3. В диалоговом окне разрешения для ELMAH выберите DefaultAppPool, а затем установите флажок записать в столбце Разрешить .In the Permissions for Elmah dialog box, select DefaultAppPool, and then select the Write check box in the Allow column.

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

    (Если вы не видите DefaultAppPool в списке имен групп или пользователей , вероятно, вы использовали другой метод, отличный от указанного в этом руководстве, для настройки IIS и ASP.NET 4 на компьютере.(If you don't see DefaultAppPool in the Group or user names list, you probably used some other method than the one specified in this tutorial to set up IIS and ASP.NET 4 on your computer. В этом случае выясните, какое удостоверение используется пулом приложений, назначенным приложению университета Contoso, и предоставьте ему разрешение на запись.In that case, find out what identity is used by the application pool assigned to the Contoso University application, and grant write permission to that identity. См. ссылки о удостоверениях пула приложений в конце этого руководства.) Нажмите кнопку ОК в обоих диалоговых окнах.See the links about application pool identities at the end of this tutorial.) Click OK in both dialog boxes.

Повторное тестирование ведения журнала ошибок и отчетовRetest error logging and reporting

Протестируйте, вызывая ошибку повторно тем же способом (запросите неверный URL-адрес) и запустите страницу журнал ошибок .Test by causing an error again in the same way (request a bad URL) and run the Error Log page. На этот раз ошибка появляется на странице.This time the error appears on the page.

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

СводкаSummary

Вы выполнили все задачи, необходимые для правильной работы университета Contoso в службах IIS на локальном компьютере.You have now completed all of the tasks necessary to get Contoso University working correctly in IIS on your local computer. В следующем руководстве вы сделаете сайт общедоступным, развернув его в Azure.In the next tutorial, you will make the site publicly available by deploying it to Azure.

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

В этом примере, причина, по которой ELMAH не удалось сохранить файлы журнала, достаточно очевидна.In this example, the reason why Elmah was unable to save log files was fairly obvious. Трассировку IIS можно использовать в случаях, когда причина проблемы не настолько очевидна; см. раздел Устранение неполадок с неудачными запросами с помощью трассировки в IIS 7 на сайте IIS.NET.You can use IIS tracing in cases where the cause of the problem is not so obvious; see Troubleshooting Failed Requests Using Tracing in IIS 7 on the IIS.net site.

Дополнительные сведения о том, как предоставить разрешения удостоверениям пула приложений, см. в разделе удостоверения пула приложений и Защита содержимого в IIS с помощью списков управления доступом файловой системы на сайте IIS.NET.For more information about how to grant permissions to application pool identities, see Application Pool Identities and Secure Content in IIS Through File System ACLs on the IIS.net site.