【发布时间】:2020-03-30 19:57:30
【问题描述】:
在 ASP.Net Core 3.1 项目中,我有一个从 ControllerBase 继承的“基础”控制器,如下所示:
[Authorize]
public abstract class BaseController : ControllerBase
{
protected readonly IMapper mapper;
protected readonly ILogger logger;
protected BaseController(
IMapper mapper,
ILogger logger)
{
this.mapper = mapper;
this.logger = logger;
var ok = Request.HttpContext.Items.TryGetValue("value", out object value);
}
}
然后我的控制器继承自它,例如:
[Route("api/[Controller]"]
public class MyController : BaseController
{
public MyController(
IMapper mapper,
ILogger<MyController> logger,
/*...some other services injected here...*/) : base(mapper, logger)
{ }
}
我有一个中间件设置,可以在标题的 Items 集合中设置“值”项。该值正在按预期设置。
但是,一旦我点击基本控制器的构造函数,所有属性都为空(Request、HttpConext、ControllerContext 等)。
上述设置在 WebApi2 上运行良好。
我在这里错过了什么?
【问题讨论】:
-
让你的演员
public -
@JohanP Typo,ctor 在代码中是公开的。
-
@dcg 对不起,另一个错字!! base ctor 正在代码中被调用。
标签: c# asp.net-core