我正在尝试从Id
到AspNetUsers
的{{1}}中实施标准nvarchar
。我设法让那一方工作。但是我的问题是当我尝试登录时,我不断收到来自int
类的错误。
我的代码如下:
UserManager
在登录页面上我已经
了public class UserManager : UserManager<ApplicationUser, int>
{
public UserManager(IUserStore<ApplicationUser, int> store)
: base(store)
{
}
我一直遇到的错误是 System.ArgumentNullException:Value不能为null。 参数名称:manager 。还有其他人遇到过这个问题吗?在此先感谢您的帮助
堆栈跟踪
if (IsValid)
{
// Validate the user password
var manager = Context.GetOwinContext().GetUserManager<UserManager>();
var user = manager.Find(UserName.Text, Password.Text); //This line throws the error
if (user != null)
{
IdentityHelper.SignIn(manager, user, isPersistent: false);
Response.Redirect("~/Home.aspx"); }
else
{
FailureText.Text = "Invalid username or password.";
ErrorMessage.Visible = true;
}
}
答案 0 :(得分:14)
确保在您的OWIN上下文中注册了UserManager
。您应该在Startup
班级中找到类似的内容:
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
还要确保将[assembly: OwinStartup(typeof(YourNamespace.Startup))]
属性应用于您的网络程序集。
答案 1 :(得分:2)
manager.Find()方法只搜索表的主键,你必须使用类似的东西:
Context db = new Context();
if (db.Users.Select(u => u).Where(u => u.Username == Username && u.Pass == Password).ToList().Count() == 1)
{
// login
}