这是网络配置:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows" />
<authorization>
</authorization>
<identity impersonate="true" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<windowsAuthentication enabled="true" >
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
在页面代码中(试图查看其中任何一个是否有效):
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
string sLoginID = identity.Name.ToString();
sLoginID = sLoginID.Remove(0, sLoginID.IndexOf('\\') + 1);
alert.InnerText = User.Identity.Name + "////// " + sLoginID ;
结果(所需的是DOMAIN \ USERNAME):
Anonymous////// NETWORK SERVICE
网站位于iis Server 6.0上,除身份模拟和Windows身份验证外,其他所有内容都被禁用。
答案 0 :(得分:0)
我认为由于identity impersonate参数而获得此用户。 将参数更改为
identity impersonate=false
并检查您是否拥有该帐户
答案 1 :(得分:0)
这对我有用: 的web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows" />
<identity impersonate="false" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
的Page_Load
protected void Page_Load(object sender, EventArgs e)
{
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
string sLoginID = identity.Name.ToString();
TextBox1.Text = sLoginID;
}
IIS设置:
当然我正在运行7.5。
屏幕截图(在IIS上运行,而不是通过VS运行):