IHttpContextAccessor 给了我:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
我的HomeController
:
public class HomeController : BaseController
{
private static IHttpContextAccessor httpContextAccessor;
private static seiren_devContext context;
public HomeController() : base(httpContextAccessor,context)
{
}
}
我的BaseController
:
public class BaseController : Controller
{
protected readonly seiren_devContext _context;
protected readonly IHttpContextAccessor _httpContextAccessor;
protected ISession _session => _httpContextAccessor.HttpContext.Session;
public BaseController(IHttpContextAccessor httpContextAccessor, seiren_devContext context)
{
_context = context;
_httpContextAccessor = httpContextAccessor;
}
}
如何让 HomeController
类以正确的方式继承 BaseController
?
最佳答案
没有在 HomeController
中设置 static
(注意:静态在这种情况下非常糟糕)变量,因此它们将始终为 null。相反,让 HomeController
也将这两个值作为构造函数参数,并让依赖注入(inject)系统处理其余的事情。
public class HomeController : BaseController
{
public HomeController(IHttpContextAccessor httpContextAccessor, seiren_devContext context)
: base(httpContextAccessor,context)
{
}
}
您可能还需要 Startup.cs
中的 ConfigureServices
中的这一行:
services.AddHttpContextAccessor();
关于c# - 让 HomeController 继承自具有 session 属性的 BaseController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66045844/