IIS ApplicationPoolIdentity не имеет права на запись в "Временные файлы ASP.NET",
Я пытаюсь запустить веб-сайт из "AppPool" под названием "SomeAppPool", который использует "ApplicationPoolIdentity" , и когда я получаю следующую ошибку при запуске веб-сайта:
В текущем идентификаторе (IIS_APPPOOL\SomeAppPool) нет доступа на запись к 'c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files'
Я запускаю веб-сайт с помощью "Использовать локальный веб-сервер IIS" в Visual Studio 2012 (без приложения отладчика) под Windows 8.
Первое, что я заметил, это то, что папка "Временные файлы ASP.NET" даже не
существуют, поэтому устанавливать разрешения безопасности не на что.
Вторая проблема: даже если бы была папка, какие разрешения я бы установил? Я предполагаю, что мне не нужно устанавливать разрешения для каждого пользователя, созданного с помощью "ApplicationPoolIdentity" . Правильно?
Существующие решения, которые я видел, просто предлагают установить для пользователя "Сетевую службу",
но это, похоже, нарушает изоляцию веб-сайта, для которого "ApplicationPoolIdentity"
был введен.
Ответы
Ответ 1
Этот ответ форума ASP.NET, неподтвержденный в его потоке, был для меня решением. Это также малоэффективно: оно не пытается перерегистрировать IIS или предоставить пользователю опасные привилегии. Подводя итог ответу:
Подставьте ваш домен и пользователя для domain\user
в приведенном выше примере. Это все, что нужно.
Документация Microsoft для Aspnet_regiis.exe здесь. Обратите внимание, что документация для переключателя -ga
относится к ошибке в версиях 3.5 и более ранних версиях, где она не будет работать с локальными учетными записями. Если я правильно его читаю, учетные записи домена поддерживаются для всех версий, а локальные учетные записи поддерживаются начиная с Framework 4.0.
Обновление 6 июня 2017 года. Для Windows 8 и выше рассмотрите команду dism
. Он покрыл этот ответ SO. Спасибо @codebrain за это.
Обновление 7 июля 2015 года: @Vertigo любезно прокомментировал, что этот ответ также работал на учетную запись NETWORK SERVICE
в .NET 2.0 в 2008 R2/2012, поэтому мой отказ от правил о локальных учетных записях до 4.0 может быть неправильным.
Если кто-либо еще обнаружит, что это работает для локальной учетной записи под .NET 3.5 или ранее, не стесняйтесь редактировать мой ответ или отметить его в комментариях; это будет большой помощью для тех, кто может испытать эту же проблему.
Ответ 2
У меня была такая же проблема. Я проверил путь c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
, ищущий Temporary ASP.NET Files
, но не было никакой папки по этому имени. поэтому я создал новую папку вручную и назвал ее Temporary ASP.NET Files
и исправлена проблема.
Поэтому убедитесь, что указанный путь существует.
Ответ 3
Наряду с принятыми решениями, пожалуйста, проверьте место на диске и убедитесь, что на нем достаточно свободного места на диске.
Я просто столкнулся с этой проблемой на одном из наших производственных серверов, и это было связано с низким дисковым пространством.
Ответ 4
Находясь в C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
, попробуйте запустить команду aspnet_regiis.exe
.
Как правило, разрешения должны быть настроены. Если Windows "Установка и удаление программ" произойдет, или если будут установлены новые версии .NET, эти вещи будут немного меньше reset. Запуск aspnet_regiis.exe
должен помочь там.
Кроме того, убедитесь, что вы используете Visual Studio в качестве администратора.
Ответ 5
Я просто столкнулся с этим, и я сделал, чтобы создать новую учетную запись, скажем, ее "Webby".
В ISS перейдите в "Предварительные настройки" вашей страницы и измените "Учетные записи физического пути" на учетную запись Webby. Поле Path выше, которое имеет каталог веб-страницы; откройте эту папку в проводнике и добавьте Webby с разрешениями Modify. В разделе "Трассировка неудачных запросов" есть каталог журналов; добавьте в него также изменения и установите для параметра "Включено" значение true (вы можете отключить его позже, но убедитесь, что он будет работать).
На этом этапе вы можете попробовать свой сайт, и вы обязательно должны получить сообщение об ошибке из-за пользователя, которого используете.
В текущем тождестве (YOUR\Webby) нет доступа на запись к файлам C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET.
Теперь, чтобы исправить вашу проблему, вам нужно будет перейти в каталог "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files" и добавить к этому Webby также, снова Modify работы.
Решение использовать специальную учетную запись только для веб-сайтов - хорошая идея. Это реальная учетная запись (не виртуальная, как ApplicationPool), и Windows не путается (... как легко).
Надеюсь, что это поможет.