我已经对此进行了大量研究,但无法找到解决此问题的方法。
我的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。
答案 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()
{
...