Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# Wait SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# Wait SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败

C# Wait SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我目前正在实现登录ASP.NET MVC项目的功能。我正在尽可能多地使用提供的方法 目前,我已经在我的数据库中建立了一个名为User的表,该表存储了所有用户名、密码和有关用户的其他详细信息 我的登录视图模型: public class LoginViewModel { public User User { get; set; } } AccountController(主要是默认值,我只更改了PasswordSignInAsync方法的变量) [HttpPost] [异名] [Vali

我目前正在实现登录ASP.NET MVC项目的功能。我正在尽可能多地使用提供的方法

目前,我已经在我的数据库中建立了一个名为User的表,该表存储了所有用户名、密码和有关用户的其他详细信息

我的登录视图模型:

public class LoginViewModel
{
    public User User { get; set; }
}
AccountController(主要是默认值,我只更改了PasswordSignInAsync方法的变量)

[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
if(ModelState.IsValid)
{
返回视图(模型);
}
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=await-SignInManager.PasswordSignInAsync(model.User.Username,model.User.Password,false,shouldllockout:false);
为什么此行总是返回失败

这是我第一次尝试添加登录功能,因此非常感谢您的帮助。:)

添加

app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.CreatePerOwinContext(ApplicationSignInManager.Create);
如果用户名=电子邮件,则在
app\u Start\Startup.Auth.cs

中的方法
public void ConfigureAuth(IAppBuilder app)

这对我很有用: 点评:

//var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

ApplicationUser signedUser = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: false);

根据
模型检索
用户
。发送电子邮件
,并将整个用户对象作为第一个参数传递

var user = dbContext.ApplicationUser.GetFirstOrDefault(u => u.Email == model.Email);
上面的查询返回userdata。检查用户是否为null。验证检索到的userdata并将其作为参数传递给
PasswordSignInAsync
。参数类型有两种不同的方法

PasswordSignInAsync(String, String, Boolean, Boolean)
尝试以异步操作的形式登录指定的用户名和密码组合

PasswordSignInAsync(TUser, String, Boolean, Boolean)
尝试以异步操作的形式登录指定的用户和密码组合

PasswordSignInAsync(TUser, String, Boolean, Boolean)
PasswordSignInAsync(TUser,String,Boolean,Boolean)
执行与上述操作类似的操作并使结果成功。下面是检索成功结果的查询

var result = await _signInManager.PasswordSignInAsync(user, model.Password, model.RememberMe, lockoutOnFailure: false);

您好,欢迎使用StackOverflow。请将您的答案格式化为更清晰的格式。您应该检查signedUser是否为null。否则将引发异常