【问题标题】:IIS7.5 Application Pool, process identity and environmentIIS7.5 应用程序池、进程标识和环境
【发布时间】:2011-09-25 06:14:46
【问题描述】:

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

但是,如果我这样做:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

返回值:

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

所以,系统配置文件似乎仍在使用中。 git clone 和其他 git 操作挂了,好像找不到 .ssh 密钥等。

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

【问题讨论】:

  • 当该行运行时,您是否在调试器中检查了 Thread.CurrentPrincipal 是什么?
  • 是的,它会正确返回“我的”帐户。
  • 它返回:[System.Web.Security.FormsIdentity]: {System.Web.Security.FormsIdentity} AuthenticationType: "Forms" IsAuthenticated: true Name: "admin"
  • 不应该有windows身份吗?
  • 我认为你是对的。这可能是一些问题。至少一些信息..

标签: .net git iis


【解决方案1】:

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

<identity impersonate="false"/>

在 web.config 中

编辑

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

System.Security.Principal.WindowsIdentity.GetCurrent()

编辑 2

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

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

您也可以通过 inetmgr 进行设置:

不管怎样,设置后,

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

给予:

C:\Users\obrad\AppData\Local

另一个更新:

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

    <identity impersonate="true"/>

但在应用程序连接的条件下(在应用程序设置下 -> 连接为...)作为我:

【讨论】:

  • 你能看到不模拟时的当前委托人是什么吗?应该是应用池标识...
  • 这就是问题所在,我只需要检查需要做什么才能在应用程序池标识下工作。
  • System.Security.Principal.WindowsIdentity.GetCurrent() {System.Security.Principal.WindowsIdentity} AuthenticationType:“NTLM”组:{System.Security.Principal.IdentityReferenceCollection} ImpersonationLevel:无 IsAnonymous:false IsAuthenticated:true IsGuest:false IsSystem:false 名称:“seekey-note\\alexander.beletsky” 所有者:{S-1-5-32-544} 令牌:1444 用户:{S-1-5-21-3002142266- 3819629678-4064189035-1000}
  • ImpersonationLevel:无 - 可能会导致问题吗?
  • 我不这么认为,因为模拟是针对当前登录的用户,你不需要那个,你要在APP POOL身份下运行,即非模拟。我不知道...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多