User.Identity.Name为空

时间:2015-08-03 14:48:56

标签: c# asp.net-mvc-5

我已经对此进行了大量研究,但无法找到解决此问题的方法。

我的web.config:

  <system.web>
    <compilation debug="true" targetFramework="4.5.1"/>
    <httpRuntime targetFramework="4.5.2"/>
    <authentication mode="Windows"/>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>

由于某种原因

string User = User.Identity.Name;

总是空白。

IIS Windows身份验证是唯一启用的选项。

我试过了

[Authorize]

同样的结果。

我检查了IIS配置文件以确保

  <windowsAuthentication enabled="true">

设置为true。

1 个答案:

答案 0 :(得分:3)

您是否在授权范围内工作?换句话说,除非您实际上说您想要特定的控制器或授权的操作,否则即使用户先前已登录也不会填充任何内容。例如:

public ActionResult Foo()
{
    var user = User.Identity.Name; // null
}

但是

[Authorize]
public ActionResult Foo()
{
   var user = User.Identity.Name; // WIN
}

如果您仍需要允许匿名访问的操作,只需添加[AllowAnonymous]

[Authorize]
[AllowAnonymous]
public ActionResult Foo()
{
    ...