我已经创建了一个抽象控制器类(ApplicationController
)来处理一些用户身份验证,但是在调用代码时没有初始化HttpContext
。
public abstract class ApplicationController : Controller
{
public ApplicationController()
{
string myuser = HttpContext.User.Identity.Name; // NullReferenceException
}
}
答案 0 :(得分:3)
Yassir在抽象类中使用受保护的构造函数是正确的。但你是正确的,它没有解决你的问题 - HttpContext仍然没有完全填充,所以你得到空引用异常。
无论如何,解决方案很简单 - 覆盖控制器的Initialize方法:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
string myuser = this.User.Identity.Name;
base.Initialize(requestContext);
}
答案 1 :(得分:0)
尝试使你的.ctor受保护
public abstract class ApplicationController : Controller
{
protected ApplicationController()
{
string myuser = this.User.Identity.Name;
}
}
还要确保您没有错过使用指令:
using System.Web.Mvc;