【问题标题】:ASP.net: HttpContext.Current.User.Identity.Name is empty in IIS 7.5 but not on IIS ExpressASP.net:HttpContext.Current.User.Identity.Name 在 IIS 7.5 中为空,但在 IIS Express 中没有
【发布时间】:2015-07-01 20:16:13
【问题描述】:

在我的 ASP.net Web 应用程序中,在用户通过表单身份验证进行身份验证后,我试图从 HttpContext.Current.User.Identity.Name 读取用户名。

当我在运行 IIS Express 的个人计算机上运行它时,它工作得很好。当我在 IIS 7.5 下的服务器上运行它时,此表达式的计算结果始终为 string.Empty

为什么会这样?如何缓解?

注意:这不是“HttpContext.Current.User.Identity.Name is Empty”的重复项,因为该问题与 Visual Studio 中内置的 Web 服务器有关。

注意 2:在我的情况下,匿名访问尚未关闭。如果这确实是问题的原因,您能解释一下原因吗?

【问题讨论】:

    标签: c# asp.net iis asp.net-membership iis-express


    【解决方案1】:

    HttpContext.Current.User.Identity.Name 使用 LDAP 来确定您的 Windows 用户名。

    这是因为当匿名访问被关闭时,您的计算机需要使用您的 Windows 身份“登录”才能访问该站点(不是匿名的)。因此,该网站知道您是谁,并可以返回正确的数据。

    如果保持匿名访问,您的计算机将使用最快/最简单的访问方法(匿名)并将网页返回给您。然后 IIS 只知道您是匿名的,因此无法为您命名。

    【讨论】:

    • 谢谢!知道为什么在 IIS Express 中它确实有效吗?
    • 我假设它已经拥有凭据,因为它在本地运行。
    • 获取登录用户信息的正确方法是通过Page.UserController.User。另外,IIS 和 IIS Express 是不一样的,blog.lextudio.com/2015/04/…
    猜你喜欢
    • 1970-01-01
    • 2015-01-08
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多