MVC3 User.Identity.Name为null,Enironment.UserName不是

时间:2012-02-08 21:30:53

标签: asp.net-mvc-3 nullreferenceexception httpcontext

嗯,这是一个有趣的问题。我有一个在Visual Studio开发服务器上运行的ASP.NET MVC3 Intranet应用程序,没有NTLM。我正在测试的机器上没有AD域。

当我尝试使用User.Identity.Name时,它会抛出一个空引用异常,但是当我使用Environment.UserDomainEnvironment.UserName时,它们会填充正确的值。

我对此感到非常困惑。我应该避免使用User.Identity.Name,还是有理由说这是空的?

更新

我刚注意到我使用的时候  System.Web.HttpContext.Current.User.Identity.Name它有效,但只使用User.Identity.Name不起作用。我错过了使用声明吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

1 个答案:

答案 0 :(得分:1)

Environment.UserName只告诉当前正在运行程序的用户,在你的情况下,运行开发服务器的用户我认为不需要对asp.net做任何事情。

User.Identity.Name完全不同......它会告诉您当前上下文中登录人员的姓名。顺便说一句,你不必让NTLM使用它...你可以设置SqlMembershipProvider或自定义成员资格提供程序并使用表单身份验证,它可以在没有AD的情况下正常工作。