Asp.net core ASP.NET核心依赖项注入:NullReferenceException尝试访问其接口中定义的具体类成员
这是越来越奇怪,因为我已经做了几次没有问题。 我使用ASP.NETCore3.1作为记录。 问题是我在ConfigureServices启动方法中注册了一个具体类型及其相关接口:Asp.net core ASP.NET核心依赖项注入:NullReferenceException尝试访问其接口中定义的具体类成员,asp.net-core,dependency-injection,controller,asp.net-core-webapi,Asp.net Core,Dependency Injection,Controller,Asp.net Core Webapi,这是越来越奇怪,因为我已经做了几次没有问题。 我使用ASP.NETCore3.1作为记录。 问题是我在ConfigureServices启动方法中注册了一个具体类型及其相关接口: public void ConfigureServices(IServiceCollection services) { services.AddDbContext<MyDbContext>(options => options.UseSqlServer(
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("MyDatabase")
));
ProfileManager.RegisterMappingService(services);
services.AddScoped<IUserWorkerService, UserWorkerService>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddControllers();
这是接口:
public interface IUserWorkerService
{
public UserDto Authenticate(string userName, string password);
}
这是混凝土类:
public class UserWorkerService : IUserWorkerService
{
private readonly MyDbContext dbContext;
private readonly IMapper mapper;
public UserWorkerService(MyDbContext dbContext, IMapper mapper)
{
this.dbContext = dbContext;
this.mapper = mapper;
}
public UserDto Authenticate(string userName, string password)
{
*blah blah*
}
}
当我发出POST请求时,我正确地登录到控制器的ActionResult上,但是UserWorkerService实例不包含在其接口中定义的成员,只包含注入的成员IMapper和MyDbContext。
因此,当代码到达UsersController中的Authenticate方法调用时,调试器抛出NullReferenceException。
我在这里遗漏了什么?抛出的错误到底是哪一行?在服务中,或直接在控制器操作中。我将添加一个屏幕快照,您确定用户名和密码不为空吗?您的参数正在读取[FromBody]还是FromQueryString,这将影响这些参数的绑定parameters@DioBrando如果内容来自正文,则使用单个模型和适当的属性。那么,您是否确认问题在于参数为空?
public class UserWorkerService : IUserWorkerService
{
private readonly MyDbContext dbContext;
private readonly IMapper mapper;
public UserWorkerService(MyDbContext dbContext, IMapper mapper)
{
this.dbContext = dbContext;
this.mapper = mapper;
}
public UserDto Authenticate(string userName, string password)
{
*blah blah*
}
}