这可能是重复问题,但我没有从其他帖子中找到任何解决方案。
我正在使用Windows身份验证,当我在本地系统上构建应用程序时工作正常但是当我在IIS上部署应用程序时HttpContext.Current.User.Identity.Name返回null。除了身份验证设置上的Windows身份验证外,我已禁用eveything。
var strUserName = HttpContext.Current.User.Identity.Name == "" ? System.Security.Principal.WindowsIdentity.GetCurrent().Name : HttpContext.Current.User.Identity.Name;
我的strUserName为null。
<authentication mode="Windows">
</authentication>
<identity impersonate="true"/>
我尝试划分线并编写代码来检查究竟是什么......#/ p>
HttpContext.Current.User.Identity.Name is returning null
System.Security.Principal.WindowsIdentity.GetCurrent().Name is returning NT AUTHORITY\IUSR when impersonate is true
System.Security.Principal.WindowsIdentity.GetCurrent().Name is returning IIS APPPOOL\ApplicationPoolName when impersonate is false
以下几个链接我已经检查过
答案 0 :(得分:1)
在Visual Studio解决方案资源管理器中 - 单击Web应用程序项目 - &gt;在底部选择“属性”选项卡。确保您具有以下设置:
像这样更改您的Web.config:
<system.web>
<authentication mode="Windows"/>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication"/>
</modules>
</system.webServer>
现在尝试访问当前的Windows用户:
string user = System.Web.HttpContext.Current.User.Identity.Name;
答案 1 :(得分:0)
在web.config中尝试这些设置
<system.web>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.webServer>
</system.webServer>