C# 如何从抽象基控制器访问HttpContext?
我创建了一个抽象控制器类(C# 如何从抽象基控制器访问HttpContext?,c#,asp.net-mvc,controller,initialization,httpcontext,C#,Asp.net Mvc,Controller,Initialization,Httpcontext,我创建了一个抽象控制器类(ApplicationController),用于处理一些用户身份验证,但是调用代码时,HttpContext未初始化 public abstract class ApplicationController : Controller { public ApplicationController() { string myuser = HttpContext.User.Identity.Name; // NullRefere
ApplicationController
),用于处理一些用户身份验证,但是调用代码时,HttpContext
未初始化
public abstract class ApplicationController : Controller
{
public ApplicationController()
{
string myuser = HttpContext.User.Identity.Name; // NullReferenceException
}
}
尽量使你的.ctor受到保护
public abstract class ApplicationController : Controller
{
protected ApplicationController()
{
string myuser = this.User.Identity.Name;
}
}
另外,请确保您没有丢失此using指令:
using System.Web.Mvc;
Yassir在抽象类中使用受保护的构造函数是正确的。但是您是对的,它并没有解决您的问题——HttpContext仍然没有完全填充,因此您会得到空引用异常 无论如何,解决方案很简单——重写控制器的Initialize方法:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
string myuser = this.User.Identity.Name;
base.Initialize(requestContext);
}
如果ctor受到保护,会有什么区别?