【发布时间】:2022-01-21 03:33:58
【问题描述】:
我在 IIS 中运行的旧版 ASP.NET Framework 4.5 (Windows auth) 网站使用以下代码获取 Windows 用户 ID(以评估权限):
String Name = System.Environment.UserName;
查看此字符串的日志,未正确获取 Windows 用户 ID;而是获取应用程序池凭据对应的名称。
这是因为在web.config 中使用了模拟:
<identity impersonate="true" userName="app_user" password="xxxx" />
或者我可以更改 IIS 中的设置来更正此问题吗?
该网站曾经正常运行。 IIS 中发生了一些变化,但现在没有...
在web.config中,指定了windows认证:
<system.web>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.5" />
<authentication mode="Windows" />. . .
更新:通过在 IIS 中为 Web 应用程序本身启用匿名身份验证(模拟),我能够克服这个问题。
【问题讨论】:
-
你不应该再在
identity标签中设置userName和password。要为整个 Web 应用程序配置身份,您应该使用应用程序池身份。要在旧版 ASP.NET Web 应用程序中查询登录用户信息,请使用Page.User或Controller.User。不知道您是如何开始使用此网络应用程序的,但互联网上有大量示例告诉您正确的方法。 -
您可以阅读我的博客文章了解更多详细信息,blog.lextudio.com/…