Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# UserManager不断引发System.ArgumentNullException_C#_Asp.net_Entity Framework_Owin_Asp.net Identity 2 - Fatal编程技术网

C# UserManager不断引发System.ArgumentNullException

C# UserManager不断引发System.ArgumentNullException,c#,asp.net,entity-framework,owin,asp.net-identity-2,C#,Asp.net,Entity Framework,Owin,Asp.net Identity 2,我试图在AspNetUsers中实现标准Id,从nvarchar到int。我已经设法使那一方面发挥作用了。然而,我的问题是,当我尝试登录时,我总是从UserManager类得到一个错误 我的代码如下: public class UserManager : UserManager<ApplicationUser, int> { public UserManager(IUserStore<ApplicationUser, int> store) : base

我试图在
AspNetUsers
中实现标准
Id
,从
nvarchar
int
。我已经设法使那一方面发挥作用了。然而,我的问题是,当我尝试登录时,我总是从
UserManager
类得到一个错误

我的代码如下:

public class UserManager : UserManager<ApplicationUser, int>
{
    public UserManager(IUserStore<ApplicationUser, int> store) 
    : base(store) 
{ 
}
公共类UserManager:UserManager
{
公共用户管理器(IUserStore商店)
:基地(商店)
{ 
}
在登录页面上我有

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;
            }
        }
if(IsValid)
{
//验证用户密码
var manager=Context.GetOwinContext().GetUserManager();
var user=manager.Find(UserName.Text,Password.Text);//此行抛出错误
如果(用户!=null)
{
IdentityHelper.SignIn(经理、用户、isPersistent:false);
Response.Redirect(“~/Home.aspx”);}
其他的
{
FailureText.Text=“无效的用户名或密码。”;
ErrorMessage.Visible=true;
}
}
我一直得到的错误是System.ArgumentNullException:值不能为null。 参数名称:manager。是否有其他人遇到此问题?请提前感谢您的帮助

堆栈跟踪

[ArgumentNullException: Value cannot be null.
Parameter name: manager]
Microsoft.AspNet.Identity.UserManagerExtensions.Find(UserManager`2 manager, String userName, String password) +221
Account_Login.LogIn(Object sender, EventArgs e) in Login.aspx.cs:17
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9628026
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
System.Web.UI.<ProcessRequestMainAsync>d__14.MoveNext() +5226
[ArgumentNullException:值不能为null。
参数名称:管理器]
Microsoft.AspNet.Identity.UserManager.Find(UserManager`2管理器,字符串用户名,字符串密码)+221
Login.aspx.cs中的Account\u Login.Login(对象发送者,事件参数e):17
System.Web.UI.WebControls.Button.OnClick(EventArgs e)+9628026
System.Web.UI.WebControl.Button.RaisePostBackEvent(String eventArgument)+103
System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+35
System.Web.UI.d_u14.MoveNext()+5226

确保在OWIN上下文中注册了
UserManager
。在
启动
类中应该有类似的内容:

app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext(ApplicationUserManager.Create);
另外,请确保已将
[assembly:OwinStartup(typeof(YourNamespace.Startup))]
属性应用于web程序集。

manager.Find()方法仅在表的主键中搜索,您必须使用以下命令:

Context db = new Context();
if (db.Users.Select(u => u).Where(u => u.Username == Username && u.Pass == Password).ToList().Count() == 1)
{
      // login
}

你能指定哪一行引发异常吗?@MotiAzu对我来说是这一行
var user=manager.Find(UserName.Text,Password.Text)
@Izzy粘贴您的
ArgumentNullException的完整堆栈跟踪
@wal请查看更新的问题可能重复的在尝试您的建议后,我收到相同的错误,但在
公共自定义角色存储(ApplicationDbContext上下文)
line:/@Izzy,这意味着解决方案是正确的,而您只是遇到了一些其他问题,这可能很难帮助您,因为您没有提供任何与该行相关的代码。@Izzy-我会根据您的最佳判断提供该代码,或者如果没有相关的问题,请单独提问(乍一看似乎不是这样的-您提供的信息没有提到您的
管理器
实例)@Izzy可能您的
ApplicationDbContext
也未在OWIN中注册?请检查我在回答
ApplicationDbContext
时建议的内容。@Sergey刚刚检查了我的
ApplicationDbContext
是否已注册