如何解决ASP.NET核心依赖项注入:NullReferenceException尝试访问其接口中定义的具体类成员
这变得很奇怪,因为我已经多次完成了,没有任何问题。 我正在使用ASP.NET Core 3.1进行记录。 问题是我在ConfigureServices Startup方法中注册了具体类型及其相对接口:
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();
我将依赖项注入控制器中
[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
private readonly IUserWorkerService userWorkerService;
public UsersController(IUserWorkerService userWorkerService)
{
this.userWorkerService = userWorkerService ?? throw new ArgumentNullException(nameof(userWorkerService));
}
[AllowAnonymous]
[HttpPost("authenticate")]
public IActionResult Authenticate(string userName,string password)
{
var user = this.userWorkerService.Authenticate(userName.Trim(),password.Trim());
if (user == null)
return Unauthorized();
return Ok(System.Text.Json.JsonSerializer.Serialize(user));
}
}
这是界面:
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。
我在这里想念什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。