2009-10-15 65 views
29

我有一个Silverlight应用程序(使用MVC),当我在Visual Studio中使用Visual Studio开发中心构建时,没有问题,HttpContext.Current.User.Identity.Name的值为HttpContext.Current.User.Identity.Name为空

但是当我使用与IIS 7.5(我使用Windows 7)相同的项目,HttpContext.Current.User.Identity.Name保持空

任何人都可以帮忙吗?或者知道我在哪里可以找到Visual Studio开发中心的设置,所以我可以检查IIS中有什么问题?

+2

检查您的验证设置。 HttpContext.Current.User是一个封装当前用户的IPrincipal - 是您自己的项目中的Windows用户,.NET Forms安全主体,Passport主体或自定义用户主体。 我怀疑IIS7是允许匿名身份验证,而无论什么原因,Visual Studio作为经过身份验证的用户运行。什么是在Visual Studio中返回的.Name值,以及您的IIS网站上的身份验证设置是什么? – 2009-10-15 08:32:52

+0

。在Visual Studio中的名称返回“lapjordy \\ Jordy”(我的Windows登录名) 。IIS中的名称返回“”(空字符串) 我在IIS中启用了匿名身份验证并打开了Windows身份验证,浏览器要求我给我的Windows凭据.. 我唯一想要的是,应用程序(silverlight)给我我当前的Windows用户的名称(没有浏览器是要求我的用户名 - >见图片) – Jordy 2009-10-15 11:39:06

+0

http://img98.imageshack.us/content.php?page=done&l=img98/5376/printscreen1.png&via=mupload – Jordy 2009-10-15 11:40:14

回答

1

如果IIS服务器位于同一个域上,并且组策略中的安全设置允许,浏览器将仅检测您的用户名。

否则,您将不得不为其提供凭据,但如果它不在同一个域中,则无法验证您的身份。

+0

如何将IIS服务器和浏览器(或应用程序?)放在同一个域中? 我是否需要设置这些组策略?你有一个例子吗? 希望你能帮助! :) – Jordy 2009-10-16 19:05:36

38

过去几天我一直在努力解决这个问题。

我建议阅读斯科特Guthrie的博客文章Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

对我的问题是,虽然我曾在IIS中启用Windows身份验证和我在web.config中的<system.web>部分有<authentication mode="Windows" />,我不会阻止匿名访问。最后一部分是关键。 您需要阻止匿名访问以确保浏览器发送凭证。

您可以在控制面板中配置IIS让您的网站(或机)使用Windows身份验证,并拒绝匿名访问,或者你可以添加以下到system.web节你的web.config:

<authentication mode="Windows" /> 

<authorization> 
    <deny users="?"/> 
</authorization> 
+1

为我工作,虽然我的Identity.Name只是间歇性的空白,从第二到第二。不知道为什么,如果有人能解释,会感兴趣吗? – Ronnie 2016-03-17 15:54:33

4

另外,特别是如果您是开发人员,请确保您实际上连接到IIS服务器,而不是连接到Visual Studio附带的IIS Express。如果你正在调试一个项目,如果不是那么容易,有时甚至认为你连接到了IIS,但事实并非如此简单。

即使您在IIS上启用了Windows身份验证并禁用了匿名身份验证,这对您的Visual Studio模拟也没有任何影响。

4

我最近也有这个问题。使用新客户端,尝试从Visual Studio中运行一个旧的Web窗体应用程序,使用Windows身份验证的IISExpress。 对于我来说,在web.config配置正确

然而,IISExpress.config设置文件有:

<windowsAuthentication enabled="false"> 

帐户中的开发是在很是新的,所以unlikley它已经被编辑登录的用户。 简单地修复它,把它改为enabled = true,它就像它应该那样运行。

+1

这是我正在寻找的**答案。但是,我的IISExpress设置存储在文件'applicationhost.config'中。 – Nova 2014-11-22 21:24:54

3

除了回答说:“3月28日在'11 12:27Bryan贝达德”

如果该解决方案不起作用,您必须启用Windows身份验证在国际空间站经理。 如何操作:

1.要从运行对话框启动IIS管理器: 在开始菜单上,单击所有程序,附件,然后单击运行。 在打开框中,键入inetmgr,然后单击确定。

2.在连接窗格中,展开服务器名称,展开站点,然后转到您要配置的层次结构窗格中的级别,然后单击网站或Web应用程序。 3.滚动到“主页”窗格中的“IIS”部分,然后双击“身份验证”。

4.在“身份验证”窗格中,选择“匿名身份验证”,然后单击“禁用”。 enter image description here

  1. 在Authentication窗格中,选择Windows Authentication,然后单击Enable。

Reference

0

由于@PaulTheCyclist说,如果使用IISExpress匿名身份验证默认情况下启用,Windows身份验证被禁用。

这可以改变我肯定被称为PropertyPages(不是右键单击 - >属性)。选择网络项目

相关问题