IIS 7.5 с идентификатором процесса, установленным для пользователя, имеет неправильный USERPROFILE - PullRequest
1 голос
/ 05 октября 2011

Прежде всего, это мой третий вопрос по аналогичной теме ... и до сих пор у меня нет ответа, может быть, только приближаюсь к нему (см. первый , второй ).

Мое веб-приложение (ASP.NET MVC3 под IIS 7.5) запускает git для доступа к некоторым репозиториям github. После того, как я обновил свою рабочую станцию ​​до Windows SP1, она перестала работать. Причина была в том, что как только git запустился, он фактически запускает ssh.exe для связи с github. Ssh.exe зависает, поэтому все приложение зависает.

Пул приложений, используемый этим приложением, использует тот же идентификатор процесса, что и я. Но с помощью ProcessHacker я вижу следующую картинку:

w3wp process environment

Из-за того, что USERPROFILE указывает на / system32 / config / systemprofile, ssh.exe ожидает наличие папки .ssh, которая содержит открытый / закрытый ключи. Поскольку ключей там нет, он зависает.

Но ключи обычно находятся в ~ / .ssh (в моем случае c: \ users \ alexander.beletsky.ssh). Как только я скопировал ключи в / system32 / config / systemprofile, приложение начало работать должным образом.

У меня вопрос, почему w3wp.exe считает, что его профиль в / system32 / config / systemprofile? можно ли это изменить? это ожидаемое поведение для пула приложений или просто проблема моей машины?

В ожидании каких-либо подсказок!

EDIT

Для свойства "Загрузить профиль пользователя пула приложений" установлено значение ИСТИНА.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

ssh.exe фактически использует переменную окружения HOME. Проверьте правильность установки.

1 голос
/ 06 октября 2011

Поскольку моя машина, на которой это работает, имеет то же значение на странице окружения процесса хакера, и все же

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) имеет значение моего пользовательского appData, и у меня есть SP1, я думаю, что это должно быть связано не с ним, а с чем-то в вашей конфигурации, что могло быть изменено. Проверьте, правильно ли ваш inetmgr установил личность для вашего приложения. Откройте C: \ inetpub \ temp \ appPools \ yourAppPoolName \ yourAppPoolName.config и проверьте, существует ли этот параметр:

<configuration>
    ....
  <system.applicationHost>
    <sites>
      <site name="Default Web Site" id="1" serverAutoStart="true">
       <application path="/yourAppPath" applicationPool="yourAppPoolName">
                <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\yourAppPath" userName="yourUserName" password="[enc:AesProvider:someHashHere=:enc]" />
       </application>
       ...
      </site>
    </sites>
  <system.applicationHost>

<configuration>

Если нет, вы можете настроить его там (введите пароль в виде обычного текста или вы можете настроить его, используя inetmgr, как я описал в своем ответе на другой вопрос).

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