2014-03-12 88 views
0

我试图在asp.net web应用程序中设置Windows身份验证。Windows身份验证用户空白

在aspx页面运行下面的代码不会返回任何信息..

User.Identity.Name.ToString() 

这是我到目前为止已经完成: 服务器是赢得2008 R2。在IIS中,我启用了Windows身份验证。 在Windows的高级设置中,身份验证是扩展保护:关闭并启用内核模式身份验证。

在我的应用程序的web.config中,我有以下几点:

<authentication mode="Windows"/> 
在对System.Web节点

。 在默认的ASPX我有以下的页面加载..

string userName=" ++ " + User.Identity.Name.ToString() + " ++ "; 
ltrTest.Text = userName; 

全部返回为“++ ++”。

+0

++两端的推理是什么? – Humpy

+0

只是一个视觉指示器,以便在最坏的情况下,我得到的不仅仅是一个空白页面。 – Freq

回答

1

你需要做几件事情。在您的开发机器中,在本地运行应用程序时,您需要禁用匿名身份验证并启用Windows身份验证。要做到这一点,你需要点击你的项目属性。在那里,你应该看到Development Server(我点击我的解决方案,然后点击属性选项卡)。然后,您将匿名身份验证更改为已禁用,然后将Windows身份验证更改为已启用。

然后,您应该能够使用

string userName = User.Identity.Name; 
ltrTest.Text = userName; 

这应该这样做。希望这可以帮助。

编辑:我已经在一个新的应用程序中设置Windows身份验证,并发布到IIS和显示标签作为用户名。

步骤:

1)

<authentication mode="Windows"> 
     <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/" /> 
    </authentication> 
    <authorization> 
     <deny users = "?" /> 
    </authorization> 

这是我如何设置webconfig。如果您有

<identity impersonate="true"/> 

您需要将其删除。

2)发布到IIS

3)打开网站主页的IIS并点击验证。

4)禁用匿名身份验证和启用Windows身份验证。 注意:Windows身份验证是唯一启用的功能。如果启用了其他任何功能(Impersontaion),则禁用它。

5)在本地PC,导航到该网站,在登录凭据键入提示

就是这样。使用我放置在default.aspx页面中的标签,我能够以DOMAIN \ User的格式查看我的用户名。我还显示了身份验证类型以及用户是否已通过身份验证。

这应该工作,因为我刚刚测试过它。

+0

谢谢,但我试图让这个在Web服务器上进行。 – Freq

+0

还是有点困惑。你使用的是什么版本的IIS?如果你在本地运行它,如果你使用的是Visual Studio,你将会使用IIS Express。如果您要将您的站点发布到实际的Web服务器(如IIS7),则仍需要禁用匿名身份验证,甚至可能需要Forms Authentication并启用Windows身份验证。如果您不在本地进行调试,则需要更多信息。如果你在本地调试,上面的代码是否工作,但不是在发布时? – Humpy

+0

我发布到IIS服务器,而不是本地。在IIS服务器上,保持启用Windows身份验证,如果我禁用匿名身份验证,我会得到一个登录对话框>我尝试登录3次尝试,然后出现401错误。当我禁用匿名身份验证时,我没有登录对话框,页面显示上面没有用户信息。此外,ASP.Net模拟,基本身份验证,摘要式身份验证和表单身份验证都被禁用。 – Freq