ApplicationPoolIdentity не имеет разрешения на запись в папку ASP.NET App_Data

Эта статья поможет устранить проблему, из-за чего возникает ошибка (отказано в доступе), когда веб-приложение записывает данные в папку ASP.NET App_Data .

Исходная версия продукта: Службы INTERNET INFORMATION Services 7.5 и более поздние версии
Исходный номер базы знаний: 2005172

Симптомы

Веб-приложение создается с помощью Microsoft Visual Studio, а затем публикуется в службах IIS 7.5 или более поздней версии. В рамках обработки запроса приложения необходимо записать данные в папку App_Data на сервере. Например, приложение использует SQLDataSource или XMLDataSource. При попытке сделать это отображается сообщение об ошибке, похожее на следующее:

Сведения об исключении: System.UnauthorizedAccessException: доступ к пути [путь к папке App_Data] запрещен.

Причина

Начиная с IIS 7.5 и более поздних версий, по умолчанию для пула приложений используется идентификатор ApplicationPoolIdentity. При создании веб-приложения с помощью Visual Studio папка App_Data не настраивается автоматически, чтобы разрешить доступ на запись для ApplicationPoolIdentity. Поэтому попытка записи в папку App_Data завершится ошибкой.

Разрешение

Чтобы обойти это поведение, предоставьте разрешения ACL на чтение и запись для ApplicationPoolIdentity (IIS APPPOOL\ApplicationPool) в папке App_Data .

Дополнительная информация

ApplicationPoolIdentity — это управляемая учетная запись службы, которая представляет собой новую концепцию, представленную в Windows Server 2008 R2. Дополнительные сведения об управляемых учетных записях служб см. в статье Новые возможности учетных записей служб.