IIS 7: удостоверение «IIS APPPOOL \ DefaultAppPool» не имеет достаточных разрешений для доступа к временному каталогу - PullRequest
3 голосов
/ 16 сентября 2011

У меня странная и неразрешимая проблема с IIS 7.0 в Windows 7.
Я пытаюсь запустить сайт на локальном тестовом сервере и получаю следующую ошибку:

Access to the temp directory is denied.  
Identity 'IIS APPPOOL\DefaultAppPool' under  
which XmlSerializer is running does not have sufficient permission  
to access the temp directory.  

CodeDom will use the user account the process is using to do the compilation,  
so if the user doesn't have access to system temp directory,  
you will not be able to compile.  
Use Path.GetTempPath() API to find out the temp directory location.

У меня несколько пулов, но только одинсреди них работает правильно.Это Классический .NET AppPool .При запуске сайтов на других я получаю сообщение об ошибке, которое было предоставлено ранее.Самое интересное, что я не могу найти различий между конфигурацией пулов через пулы приложений IIS Manager.Может быть, я что-то упустил?
Я пытался изменить права доступа для Windows\Temp, C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files и local settings' temporary folder, но мои действия не дали результатов.

Итак, надеемся на вашу помощь и некоторые советы.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Вы вызывали метод Path.GetTempPath() (вы можете вызывать этот метод из любой программы, не обязательно с вашего сайта)?

Вы должны установить полный доступ к этому пути для своей учетной записи.

Также я нашел эту тему форума :

Другая причина может заключаться в том, что processModel в machine.config установлен так что ASP.Net работает внутри dllhost.exe вместо aspnet_wp.exe. Если это так, то вам нужно дать права на счет IWAM_machineName.

Вы можете проверить название процесса и учетную запись с доступом Отказано в ошибке при использовании утилиты FileMon от sysinternals.com.

0 голосов
/ 13 февраля 2017

Еще один вариант, который следует учитывать ... DefaultAppPool создает свою собственную учетную запись пользователя и папку в каталоге «c: \ Users» при создании пула и его первом запуске.Это фактически виртуальная учетная запись пользователя и должна быть названа для пула приложений, или «DefaultAppPool».Он использует эту временную учетную запись пользователя для запуска пула.В некоторых установках люди видят не эту папку, а папку TEMP, когда веб-сайт IIs доступен и использует пул по умолчанию.Эта папка User используется пулом и ASP.NET для кэширования и записи файловых ресурсов и других вещей, используемых IIs, ASP.NET и этой виртуальной учетной записью.

Если вместо этого вы видите папку «TEMP»в папке «Пользователи» у вас повреждена учетная запись пула приложений во IIs и в реестре.Пул создает папку TEMP в качестве резервной копии для этой виртуальной учетной записи, которая может не иметь правильной настройки безопасности.У меня был такой точный сценарий.

Чтобы исправить это, перейдите в реестр по адресу: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList Проверьте, есть ли у вас учетная запись пользователя SID с расширением «.bak» дляDefaultAppPool учетная запись пользователя.Если это так, удалите его и перезагрузите компьютер.Протестируйте свой сайт снова, убедившись, что он действительно настроен на использование DefaultAppPool.Теперь он должен воссоздать папку «DefaultAppPool» в «Пользователи», заново создать запись реестра для пользователя DefaultAppPool, и ваша ошибка должна исчезнуть.т.е. нет папки TEMP.

После того, как я сделал это, все мои ошибки переполнения стека исчезли в Visual Studio для моего веб-приложения и всех перезапусков и окончательного сбоя пула приложений в II.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...