![](/img/trans.png)
[英]'System.MissingMethodException' exception in mscorlib.dll
[英]UserManager.Create: An exception of type 'System.MissingMethodException' occurred in mscorlib.dll but was not handled in user code
我目前正在Visual Studio Express 2013 for Web中构建网站,并且使用默认成员资格功能供用户注册。 但是,当我在localhost上打开网站并尝试注册用户时,出现以下错误:
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();
}
}
我已经搜索了一段时间,但似乎找不到解决方案。 我尝试更新所有参考,但无济于事。 有人遇到过这种情况么?
得到它了! 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)之下的一个版本。
在程序包管理器控制台Install-Package System.Net.Http -Version 4.3.3上运行此命令
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.