【发布时间】:2014-12-08 20:35:26
【问题描述】:
我有一个问题(我猜)可能与 api 控制器有关。
public class AccountController : ApiController
{
private readonly UserAccountService<HierarchicalUserAccount> userAccountService;
private readonly AuthenticationService<HierarchicalUserAccount> authSvc;
public AccountController(AuthenticationService<HierarchicalUserAccount> authSvc)
{
authSvc = authSvc;
userAccountService = authSvc.UserAccountService;
}
[HttpGet]
public async Task<HttpResponseMessage> Get()
{
...
HierarchicalUserAccount account;
if (userAccountService.AuthenticateWithUsernameOrEmail("name@mail.com", "123456", out account))
{
authSvc.SignIn(account, false); //ERROR because authSvc is null
}
return await ... ;
}
当名为 userAccountService 和 authSvc 的构造函数获取它们的值,但在 get 方法中 authSvc 变为 null 并且 userAccountService 正常工作。
谢谢。
【问题讨论】:
-
您是否在依赖注入容器中注册了身份验证服务?您的控制器是否包含不初始化
authSvc的默认构造函数? -
我没有默认构造函数
-
@peer 这个问题与您提到的重复问题无关。 OP 知道该字段为 NULL,并在 ASP.NET Web API 初始化的上下文中询问为什么会这样。
-
@MaxD 那你注册服务了吗?您使用哪个 DI 容器?可以贴一下它的初始化代码吗?
标签: c# asp.net-web-api