C# Microsoft.AspNetCore.Mvc.ControllerBase.Request.*get**返回空值
在ASP.Net Core 3.1项目中,我从ControllerBase继承了一个基本控制器,如下所示:C# Microsoft.AspNetCore.Mvc.ControllerBase.Request.*get**返回空值,c#,asp.net-core,C#,Asp.net Core,在ASP.Net Core 3.1项目中,我从ControllerBase继承了一个基本控制器,如下所示: [Authorize] public abstract class BaseController : ControllerBase { protected readonly IMapper mapper; protected readonly ILogger logger; protected BaseController( IMapper map
[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集合中设置值项。正在按预期设置该值
但是,只要我点击基本控制器的构造函数,所有属性都是null Request、HttpConext、ControllerContext等
上面的设置在WebApi2上运行良好
我在这里缺少什么?在ASP.Net Core 3+中执行此操作的方法是将IHttpContextAccessor注入控制器,然后将其注册为Singleton 当我使用Autofac处理DI时,我添加了:
builder.RegisterType<HttpContextAccessor>()
.As<IHttpContextAccessor>()
.SingleInstance();
在ASP.NETCore3+中执行此操作的方法是将IHttpContextAccessor注入控制器,然后将其注册为单例 当我使用Autofac处理DI时,我添加了:
builder.RegisterType<HttpContextAccessor>()
.As<IHttpContextAccessor>()
.SingleInstance();
您可以使用IHttpContextAccessor访问asp.net核心中的HttpContext
首先,必须像下面这样在ConfigureServices方法中注册IHttpContextAccessor
services.AddHttpContextAccessor;
然后从DI访问HttpContext
受保护基站控制器
IMapper映射器,
ILogger记录器,
IHttpContextAccessor httpContextAccessor
{
this.mapper=mapper;
this.logger=记录器;
var ok=httpContextAccessor.HttpContext.Items.TryGetValuevalue,输出对象值;
}
您可以使用IHttpContextAccessor访问asp.net核心中的HttpContext
首先,必须像下面这样在ConfigureServices方法中注册IHttpContextAccessor
services.AddHttpContextAccessor;
然后从DI访问HttpContext
受保护基站控制器
IMapper映射器,
ILogger记录器,
IHttpContextAccessor httpContextAccessor
{
this.mapper=mapper;
this.logger=记录器;
var ok=httpContextAccessor.HttpContext.Items.TryGetValuevalue,输出对象值;
}
做你的演员public@JohanP输入错误,代码中的输入错误是公共的。@dcg抱歉,另一个输入错误!!正在代码中调用基ctor。请创建您的ctorpublic@JohanP输入错误,代码中的输入错误是公共的。@dcg抱歉,另一个输入错误!!正在代码中调用基本构造函数。