UserManager.Create:mscorlib 中发生了类型为“System.MissingMethodExce

本文关键字:System MissingMethodExce 类型 发生了 Create mscorlib UserManager | 更新日期: 2023-09-27 18:32:28

我目前正在Visual Studio Express 2013 for Web中构建一个网站,并且我正在使用默认的会员功能供用户注册。 但是,当我在本地主机上打开网站并尝试注册用户时,我收到以下错误:

An exception of type 'System.MissingMethodException' occurred in mscorlib.dll 
but was not handled in user code
Additional information: Method not found: 'System.Threading.Tasks.Task`1<!!0>
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(System.Linq.IQueryable`1<!!0>,
System.Linq.Expressions.Expression`1<System.Func`2<!!0,Boolean>>)'.

这是我浏览器的堆栈跟踪:

[MissingMethodException: Method not found: 'System.Threading.Tasks.Task`1<!!0> System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(System.Linq.IQueryable`1<!!0>, System.Linq.Expressions.Expression`1<System.Func`2<!!0,Boolean>>)'.]
   Microsoft.AspNet.Identity.EntityFramework.UserStore`6.GetUserAggregateAsync(Expression`1 filter) +0
   Microsoft.AspNet.Identity.EntityFramework.UserStore`6.FindByNameAsync(String userName) +1071
   Microsoft.AspNet.Identity.UserManager`2.FindByNameAsync(String userName) +177
   Microsoft.AspNet.Identity.<ValidateUserName>d__4.MoveNext() +803
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21
   Microsoft.AspNet.Identity.<ValidateAsync>d__0.MoveNext() +468
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
   Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +123
   Microsoft.AspNet.Identity.<CreateAsync>d__0.MoveNext() +795
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
   Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +123
   Microsoft.AspNet.Identity.<CreateAsync>d__d.MoveNext() +970
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
   Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +409
   Microsoft.AspNet.Identity.UserManagerExtensions.Create(UserManager`2 manager, TUser user, String password) +260
   Account_Register.CreateUser_Click(Object sender, EventArgs e) in c:'Users'Matthew'Documents'College'Senior'CSE 448'Capstone'Capstone'Account'Register.aspx.cs:14
   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.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

出异常的代码用星号标记:

protected void CreateUser_Click(object sender, EventArgs e)
    {
        var manager = new UserManager();
        var user = new ApplicationUser() { UserName = UserName.Text };
        *****IdentityResult result = manager.Create(user, Password.Text);
        if (result.Succeeded)
        {
            IdentityHelper.SignIn(manager, user, isPersistent: false);
            IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
        }
        else
        {
            ErrorMessage.Text = result.Errors.FirstOrDefault();
        }
    }

我一直在寻找一段时间,但似乎找不到解决方案。 我尝试更新我所有的参考资料,但无济于事。还有其他人遇到过这种情况吗?

UserManager.Create:mscorlib 中发生了类型为“System.MissingMethodExce

知道了!FirstOrDefaultAsync扩展方法仅存在于 .Net 4.5 实体框架程序集中。我在不同的项目中混合引用了.Net 4.0和.Net 4.5。当我将它们全部更改为 .Net 4.5 时,它可以使用Async代码。

使用上面需要.Net 4.5实体框架程序集的答案,我仍然在让Visual Studio识别新包时遇到了一些麻烦。 相反,我只是打开了 NuGet 包管理器,并使用 .Net 4.5 目标框架"更新"到我当前使用的实体框架(实体框架 6.1.3 --> 6.1.2)下面的一个版本。

在程序包管理器控制台上运行此程序 安装程序包系统.Net.Http -Version 4.3.3