这个问题似乎与此类似:IIS site not using identity specified in app pool IIS 7 + 但是,那里没有答案。
底部有一个博士。
要记住的一点是,我不是那个设置服务器的人,所以他们可能已经改变了一些我不知道的设置。
我们在IIS 7上运行ASP.NET Web服务.Web服务设置为使用DefaultAppPool,并且应用程序池的标识设置为域用户(假设它是“localdomain \ user1”)。
Web服务无法保存到某个网络文件夹,因此我们为该文件夹提供了localdomain \ user1读/写权限。但是,它仍然无法保存。
我无法远程调试,它在我自己的计算机上工作正常(可能是因为它在Visual Studio的IIS express中运行而我的用户确实有访问权限),所以我尝试更改Web服务以便包含错误消息它正在运行的用户名。
如果我使用Environment.UserName
来获取它,结果是“IUSR”。如果我使用System.Security.Principal.WindowsIdentity.GetCurrent().Name
,则返回“NT AUTHORITY \ IUSR”。
除非上述方法不可靠,否则Web服务似乎在默认用户(IUSR)下运行,而不是在其应用程序池中设置的那个。我无法弄清楚为什么,有人可以解释一下吗?
编辑:服务器上的任务管理器,如果我使用RDP登录,则表明w3wp.exe进程正由user1运行。我不确定应该相信哪一个。
谢谢。
tl; dr :Web服务的应用程序池设置为域用户,但无论如何它似乎都在IUSR下运行。我该如何预防?
答案 0 :(得分:2)
假冒是个问题。我不知道这是web服务的web.config中的一个设置。
将<identity impersonate="true"/>
更改为<identity impersonate="false"/>
,可以将其作为localdomain \ user1运行。