首先,这是我在第三个类似的话题上的问题,现在还没有答案,也许只能接近它(见第一 , 第二 )。
我的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中的configuration文件? 有可能改变这一点吗? 预计应用程序池的行为还是我的机器问题?
等待任何线索!
编辑
Load Pool的Load User Profile属性设置为TRUE。
ssh.exe
实际上是使用HOME环境变量。 检查设置是否正确。
因为我的机器在工作黑客的环境页面上仍然具有相同的价值
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来配置它,就像我在你的其他问题的答案中所描述的那样)。