我建立了一个ASP.NET网站。我设置了许多我知道如何设置到我的个人用户帐户的设置,包括:
当Web应用执行请求时,它将调用PowerShell以运行“ git config”命令。调用PowerShell时,我还为FlowImpersonationPolicy指定了调用选项,只是为了确保正确的身份使它一直到git。在运行时,在Web应用程序调用PowerShell之前,System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString()
的值确实是我的用户帐户。
问题在于,当我在Visual Studio中运行该应用程序时,与我在本地IIS实例上托管的应用程序上运行该应用程序时,'git config'的输出不同,如上所述。当我在Visual Studio中运行Web应用程序时,将显示与IIS中相同的身份,但是git config的输出不同。
当它从Visual Studio托管版本运行git config --show-origin -l
时,我看到它正确地为我的用户帐户选择了“ c:\ users \ myusername.gitconfig”的全局设置。但是,当同一Web应用程序运行在IIS下部署时,该命令不会列出该位置的配置。
所以git命令似乎没有在我的用户帐户下运行或不知道我的用户帐户,即使一切似乎都由我的用户帐户调用。我想念什么吗?
答案 0 :(得分:0)
似乎IIS中存在一个隐藏的设置,该设置没有通过IIS Manager U.I公开。
“ loadUserProfile”选项位于U.I.并且设置为true,但是还有一个名为“ setProfileEnvironment”的设置,还必须将其设置为true,以使用户配置文件真正起作用,并且对IIS启动的Git和其他进程可见。
该设置在文件“%WINDIR%\ System32 \ inetsrv \ Config \ applicationHost.config”中的应用程序池的processModel部分下。您可以在applicationPoolDefaults / processModel部分中更改设置的默认值,也可以仅更改单个应用程序池的processModel部分中的设置。
不幸的是,此设置未在IIS Manager U.I中公开。例如“加载用户个人资料”。