我有(使用MVC),当我建立在Visual Studio中,使用Visual Studio开发中心,有没有问题,Silverlight应用程序HttpContext.Current.User.Identity.Name
有一个值
但是,当我使用的是IIS 7.5(我使用的是Windows 7)同一项目, HttpContext.Current.User.Identity.Name
保持为空
任何人谁可以帮忙吗? 或者知道哪里可以找到从Visual Studio开发中心的设置,所以我可以检查哪些IIS中的错误?
Answer 1:
我这个问题挣扎在过去的几天。
我建议您阅读斯科特Guthrie的博客文章方药:内部网ASP.NET Web应用程序中启用Windows身份验证
对我来说,问题是,虽然我曾在IIS中启用Windows身份验证,我不得不<authentication mode="Windows" />
中<system.web>
web.config中的部分,我没有阻止匿名访问。 这最后一部分是关键。 您需要防止匿名访问,以确保浏览器发送的凭据。
您可以在控制面板中配置IIS让您的网站(或机)使用Windows身份验证,并拒绝匿名访问,或者你可以添加以下到system.web节你的web.config:
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
Answer 2:
这些可能会解决这个问题(这为我做了)。 在IIS快速更改项目属性值,“匿名身份验证”和“Windows身份验证”。 要做到这一点,项目选择时,按F4,然后更改这些属性。
在你在IIS上部署在本地的情况下,确保本地计算机“Windows身份验证”功能被启用,“匿名身份验证”被禁用。
请参阅
https://grekai.wordpress.com/2011/03/31/httpcontext-current-user-identity-name-is-empty/
Answer 3:
此外,特别是如果你是一名开发人员,确保你实际上连接到IIS服务器,而不是随Visual Studio中的IIS表达。 如果您正在调试一个项目,它只是那么容易,如果不容易,有时觉得您连接到IIS时,你其实不是。
即使你已经启用了Windows身份验证和禁用匿名身份验证在IIS上,这会不会让你的Visual Studio模拟任何区别。
Answer 4:
我最近也有这个问题。 在与新客户合作,试图获得一个使用Windows身份验证从Visual Studio中运行,与IISExpress旧的Web表单应用程序。 对我来说,在web.config配置正确
然而,IISExpress.config设置文件有:
<windowsAuthentication enabled="false">
开发商在登录的用户帐户是很新的,所以unlikley它已被编辑。 简单的修复事实证明,这种改变为enabled =真实,它都跑,因为它应该然后。
Answer 5:
除了回答说:“3月28日在'11 12:27Bryan贝达德”
在该解决方案不能正常工作的情况下,您必须启用Windows身份验证在国际空间站经理。 怎么做:
1.To开始从运行对话框IIS管理器:在开始菜单上,单击所有程序,单击附件,然后单击运行。 在打开框中,键入inetmgr,然后单击确定。
2.In连接窗格,展开服务器名称,展开网站,转到要配置层次结构窗格中的级别,然后单击Web站点或Web应用程序。 3.滚动到主页窗格中的IIS部分,然后双击身份验证。
4.In认证窗格中,选择匿名身份验证,然后单击禁用。
- 在身份验证窗格中,选择Windows身份验证,然后单击启用。
参考
Answer 6:
如果IIS服务器在同一域和组策略中的安全设置允许它的浏览器将只检测你的用户名。
否则,你就必须为它提供的凭据,但如果不是在同一个域,将无法对您进行验证。
Answer 7:
作为@PaulTheCyclist说,如果使用IISExpress匿名身份验证默认情况下启用,Windows身份验证被禁用。
这可以在我敢肯定,过去被称为属性页进行变化(没有右键 - >属性)。 选择Web项目
Answer 8:
禁用IIS中的身份验证选项卡中的所有其他选项除了Windows身份验证解决了我的问题。 请检查..
脚步:
- 在你的机器打开IIS
- 选择从应用程序池应用程序
- 点击身份验证选项
- 禁用除Windows身份验证的所有其他选项(Anonimous认证应该被禁用)
请检查这一点,让我知道了反馈。 它为我工作。 希望它会为你工作还..
Answer 9:
除了前面提到的所有明显的原因,有可能是另一个问题:你没有把一个授权属性在控制器的顶部,这样的:
[Authorize(Roles = "myRole")]
[EnableCors(origins: "http://localhost:8080", headers: "*", methods: "*", SupportsCredentials = true)]
public class MyController : ApiController
至少这是对我工作。
文章来源: HttpContext.Current.User.Identity.Name is Empty