为什么MVC控制器中的ServiceSecurityContext.Current为null?

时间:2013-01-23 22:20:44

标签: asp.net-mvc-4 windows-authentication

我有一个ASP.NET MVC 4项目,它在Web.config中使用Windows身份验证,如下所示:

<system.web>
    <authentication mode="Windows" />
</system.web>

但是,如果我从Controller方法调查ServiceSecurityContext.Current,它就是null。它不应该包含用户的身份验证信息,因为我正在使用Windows身份验证吗?

我试图解决这个问题的原因是因为我想知道从控制器方法中使用的凭据CredentialCache.DefaultNetworkCredentials。从我通过阅读MSDN article on the property收集到的内容,它使用当前安全上下文的凭据...为空。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

ServiceContext类旨在用于WCF服务。它与ASP.NET MVC无关。

尝试在ASP.NET MVC应用程序中使用ServiceContext.Current就像尝试在控制台应用程序中使用HttpContext.Current =&gt;你得到NULL。

  

我试图解决这个问题的原因是因为我想   知道CredentialCache.DefaultNetworkCredentials是什么凭据   使用Controller方法

然后您正在寻找User.Identity.Name属性:

[Authorize]
public ActionResult Index()
{
    string currentUser = User.Identity.Name;
    ...
}