IIS7.5应用程序池,进程标识和环境

时间:2011-09-24 10:28:11

标签: .net git iis

我的Web应用程序必须访问本地资源,文件/文件夹,才能进行git clone / pull / push。我创建了一个单独的应用程序池,其中包含进程标识==我自己的帐户(机器管理员)。

但是,如果我这样做:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

返回值:

"C:\\Windows\\system32\\config\\systemprofile\\AppData\\Local"

所以,看起来仍然使用系统配置文件。 git clone和其他git操作挂起,似乎无法找到.ssh键等。

有趣的是,它在Windows SP1更新之前运行良好(至少我责怪更新,因为机器上没有更改)。

1 个答案:

答案 0 :(得分:1)

如果还没有,请尝试设置:

<identity impersonate="false"/>
web.config中的

修改

我错了,您需要在此处拥有访问本地文件夹的应用程序池标识:

System.Security.Principal.WindowsIdentity.GetCurrent()

编辑2

我找到了解决方案。要运行应用程序AS,您需要打开模拟(应用程序池设置不适用于我的IIS7.5),但作为特定用户。因此,要启用此功能,您需要在web.config中启用模拟并指定user:

    <identity impersonate="true" password="o1j2813n" userName="obrad" />

您也可以通过inetmgr设置: ASP.NET Impersonation Settings screenshot

无论哪种方式,设置后,

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

给出:

C:\Users\obrad\AppData\Local

另一次更新:

我一直在寻找一种方法来做同样的事情而不将我的密码放在web.config中,并且可以在基本模拟开启时确认我也获得了本地用户文件夹

    <identity impersonate="true"/>

但是在应用程序连接的情况下(在应用程序设置下 - &gt;以...形式连​​接......)和我一样:

app settings screenshot