2017-01-23 11 views
1

Я столкнулся с проблемой, которая была первоначально выставленного Microsoft.CSharp.CSharpCodeGenerator бросали UnauthorizedAccessException: Access to c:\Users\[wrong-user]\AppData\Local\Temp получения «доступ запрещен» ошибка при попытке записи в временный каталог различных IIS AppPool пользователя.IIS ApplicationPool пользователь имеет значение неправильно USERPROFILE/TEMP

У меня есть другое приложение, которое фактически работает как [wrong-user] AppPool, и это приложение делает работы. Однако это имеет смысл, так как имеет доступ на запись к своему собственному каталогу пользователей.

я сузил ошибку вплоть до того, что %USERPROFILE% возвращается на пути другого пользователя AppPool IIS, несмотря на то, Environment.GetFolderPath(SpecialFolder.UserProfile) возвращает правильного пути.

Если я перечисляю Environment.GetEnvironmentVariables(User), я получаю:

  • Путь - C: \ Users \ [неправильно пользователь] \ AppData \ Local \ Microsoft \ WindowsApps;
  • TEMP - C: \ Users \ [неправильно пользователь] \ AppData \ Local \ Temp
  • TMP - C: \ Users \ [неправильные пользователя] \ AppData \ Local \ Temp

Кроме того, вручную доступа к переменным окружения пользователя с помощью HKEY_USERS/[SID]/Environment подтверждает, что это просто вниз %USERPROFILE% быть неправильно:

  • Путь -% USERPROFILE% \ AppData \ Local \ Microsoft \ WindowsApps;
  • TEMP -% USERPROFILE% \ AppData \ Local \ Temp
  • TMP -% USERPROFILE% \ AppData \ Local \ Temp

ответ

0

Проблема закончилась тем, что setProfileEnvironment, который изолирует переменные среды для каждого приложения Рабочие процессы пула были установлены на false на system.applicationHost/applicationPools/applicationPoolDefaults, несмотря на это having a default value of true according to the documentation. Поскольку ни один из пулов приложений не перекрывал его, все они получили одно и то же значение и, следовательно, разделяли общие переменные среды.

Я понятия не имею, как он был установлен в false, ни как общая USERPROFILE переменная окружения был установлен в одном пуле приложений, но не другой, но установка значения по умолчанию обратно true решить эту проблему.

Это был question/answer, который помог мне найти причину, несмотря на то, что проблема была иной.