Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WEB API 2中使用ApplicationSignInManager_C#_Asp.net Mvc - Fatal编程技术网

C# 在WEB API 2中使用ApplicationSignInManager

C# 在WEB API 2中使用ApplicationSignInManager,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试通过Web API 2登录。我所做的是从MVC 5.2的AccountController复制一些代码,但是当我运行这段代码时,ApplicationSignInManager为null,它会抛出一个异常 我在Github或ASP.NET上找不到任何示例项目 这是我的自定义UserController Web API [RoutePrefix("api/users")] public class UserController : ApiController { ... //

我正在尝试通过Web API 2登录。我所做的是从MVC 5.2的AccountController复制一些代码,但是当我运行这段代码时,ApplicationSignInManager为
null
,它会抛出一个异常

我在Github或ASP.NET上找不到任何示例项目

这是我的自定义UserController Web API

[RoutePrefix("api/users")]
public class UserController : ApiController
{

    ... // Truncated for brevity

    [Route("login")]
    [HttpPost]
    public HttpResponseMessage Login(LoginViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return new HttpResponseMessage(HttpStatusCode.Forbidden);
        }
        var signinManager = Request.GetOwinContext().Get<ApplicationSignInManager>();

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        SignInStatus result = 
            signinManager.PasswordSignIn(model.Email, model.Password, model.RememberMe, false);
        switch (result)
        {
            case SignInStatus.Success:
                return new HttpResponseMessage(HttpStatusCode.OK);
            default:
               return new HttpResponseMessage(HttpStatusCode.Forbidden);
        }
    }
}
[RoutePrefix(“api/用户”)]
公共类用户控制器:ApiController
{
…//为了简洁起见
[路线(“登录”)]
[HttpPost]
公共HttpResponseMessage登录(LoginView模型)
{
如果(!ModelState.IsValid)
{
返回新的HttpResponseMessage(HttpStatusCode.Forbidden);
}
var signinManager=Request.GetOwinContext().Get();
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
信号状态结果=
signinManager.PasswordSignIn(model.Email、model.Password、model.RememberMe、false);
开关(结果)
{
案例标志状态成功:
返回新的HttpResponseMessage(HttpStatusCode.OK);
违约:
返回新的HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}

我做错了什么?

HResult=-2147467261 Message=值不能为空。参数名称:manager Source=MicrosoftSystem.ArgumentNullException未由用户代码处理。AspNet.Identity.Owin ParamName=manager StackTrace:at Microsoft.AspNet.Identity.Owin.SignInManager.PasswordSignIn[TUser,TKey](SignInManager`2 manager,字符串用户名,字符串密码,布尔值isPersistent,布尔值shouldLockout)@你解决了这个问题吗?我遇到了同样的问题我也遇到了同样的问题:-(解决方案是使用OWIN。使用本教程进行测试->