2011-10-20 483 views
9

我创建了一个站点。这是一个内部网站。它是一个.NET 4.0网站。我想要使​​用浏览网站的人的HttpContext.Current.User.Identity.Name来获取用户名。由于它是内部的,因此不存在登录页面。我不知道我错过了什么。我需要在我的webconfig如下:为什么HttpContext.Current.User.Identity.Name返回空白

<authentication mode="Windows"></authentication> 
<identity impersonate="true"/> 
<authorization> 
    <allow users="?"/> 
</authorization> 

这:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

+0

你不会得到用户登录名称,希望保持匿名而不强制进行某种类型的身份验证 - 如果这就是你希望做的事情? –

回答

14

它出现空白时,未经认证。你也可以通过这样做来验证这一点:

HttpContext.Current.User.Identity.IsAuthenticated 

在IIS中检查您的身份验证级别,是否设置为启用Windows身份验证?

4

是的,你确实需要,至少

<authentication mode="Windows"></authentication> 

部分是必需的,如果您正在使用集成Windows身份验证。

之后,你应该能够抓住登录的人的用户名

不,你不需要。

<validation validateIntegratedModeConfiguration="false" /> 
+0

我改变了我的webconfig只有,但仍然没有用户名。从我的电脑浏览网站,我期待看到我的用户名(我登录到计算机的用户)。不知道我错过了什么。 – obautista

+2

您是否在IIS的应用程序级别配置了集成的Windows身份验证? – Icarus

8

在iis中禁用匿名访问并为您的Web应用程序启用集成的Windows安全性。

2

在IIS中,转至网站\默认网站\ [您的网站]。

选择验证选项并禁用匿名验证。

1

在我的情况下删除<remove name="FormsAuthentication" />web.config帮助。

我也有<authentication mode="Forms" /><system.web>部分。

相关问题