首先,这是关于类似主题的第三个问题..但我仍然没有答案,可能只是接近它(见first,second)。
我的Web应用程序(IIS 7.5下的ASP.NET MVC3)运行git来访问一些github存储库。将工作站升级到Windows SP1后,它停止工作。原因是,一旦git启动,它实际上运行ssh.exe与github通信。 ssh.exe似乎挂起,因此所有应用程序都会挂起。
该应用程序使用的应用程序池使用与我自己相同的进程标识。但是使用ProcessHacker我可以看到以下图片:
因为USERPROFILE指向/ system32 / config / systemprofile,ssh.exe期望有.ssh文件夹,它包含公钥/私钥。由于钥匙不在那里,它会挂起。
但键通常在〜/ .ssh(在我的例子中是c:\ users \ alexander.beletsky.ssh)。只要我将密钥复制到/ system32 / config / systemprofile应用程序就开始按预期工作了。
我的问题是,为什么w3wp.exe认为它在/ system32 / config / systemprofile中的配置文件?有可能改变吗?它是应用程序池的预期行为还是我的机器问题?
等待任何线索!
修改
应用程序池的“加载用户配置文件”属性设置为TRUE。
答案 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配置它,就像我在你对其他问题的回答中所描述的那样)。