繁体   English   中英

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

[英]IIS7.5 Application Pool, process identity and environment

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

但是,如果我这样做:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

返回值:

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

因此,看起来系统配置文件仍在使用。 git clone和其他git操作挂断,似乎找不到.ssh密钥等。

有趣的是,它在Windows SP1更新之前运行良好(至少我归咎于更新,因为计算机上没有其他更改)。

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

<identity impersonate="false"/>

在web.config中

编辑

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

System.Security.Principal.WindowsIdentity.GetCurrent()

编辑2

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

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

您也可以通过inetmgr进行设置: ASP.NET模拟设置屏幕截图

无论哪种方式,在设置此设置之后,

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

给出:

C:\Users\obrad\AppData\Local

另一个更新:

我一直在寻找一种无需将密码输入web.config即可执行相同操作的方法,并且可以在启用基本模拟功能时确认我也获得了本地用户文件夹

    <identity impersonate="true"/>

但是在应用程序像我一样连接的情况下(在应用程序设置->连接为...):

应用程序设置屏幕截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM