将进程标识设置为用户的IIS 7.5具有错误的USERPROFILE

时间:2011-10-05 19:14:24

标签: asp.net-mvc windows git iis iis-7.5

首先,这是关于类似主题的第三个问题..但我仍然没有答案,可能只是接近它(见firstsecond)。

我的Web应用程序(IIS 7.5下的ASP.NET MVC3)运行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中的配置文件?有可能改变吗?它是应用程序池的预期行为还是我的机器问题?

等待任何线索!

修改

应用程序池的“加载用户配置文件”属性设置为TRUE。

2 个答案:

答案 0 :(得分:2)

ssh.exe实际上是使用HOME环境变量。检查它是否设置正确。

答案 1 :(得分:1)

由于我所使用的机器在进程黑客的环境页面中具有相同的价值,并且仍然

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配置它,就像我在你对其他问题的回答中所描述的那样)。