找不到System.Threading.Tasks.Task方法

时间:2018-06-07 18:52:35

标签: c# .net asp.net-mvc asynchronous

开发应用程序并使用两台不同的计算机。据我所知,他们都在Windows 10(1803)的同一版本。就在最近,我开始在一台机器上遇到问题。该应用程序使用个人帐户身份验证,并在登录提示符,一旦用户输入他们的用户名和密码并单击登录,它将引发以下错误:

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>>)'.

它确定为问题的代码是(在第88行):

Line 86: // To enable password failures to trigger account lockout, change to shouldLockout: true Line 87: //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); Line 88: var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); Line 89: switch (result) Line 90: {

我已经从可疑机器中完全删除了Project并从Git重新克隆,但同样的问题。我通过我的参考资料进行了比较,并与它正在进行的机器进行了比较,并且它们都匹配。

仅供参考,这是堆栈跟踪:

[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.<GetUserAggregateAsync>d__6c.MoveNext() +0 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start(TStateMachine& stateMachine) +94 Microsoft.AspNet.Identity.EntityFramework.UserStore`6.GetUserAggregateAsync(Expression`1 filter) +146 Microsoft.AspNet.Identity.EntityFramework.UserStore`6.FindByNameAsync(String userName) +537 Microsoft.AspNet.Identity.UserManager`2.FindByNameAsync(String userName) +56 Microsoft.AspNet.Identity.Owin.<PasswordSignInAsync>d__29.MoveNext() +104 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 CaseNotesPlus.Controllers.<Login>d__12.MoveNext() in D:\Projects\CaseNotesPlus\CaseNotesPlus\Controllers\AccountController.cs:88 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97 System.Web.Mvc.Async.<>c__DisplayClass8_0.<BeginInvokeAsynchronousActionMethod>b__1(IAsyncResult asyncResult) +17 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0() +50 System.Web.Mvc.Async.<>c__DisplayClass11_1.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() +228 System.Web.Mvc.Async.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__3() +35 System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45 System.Web.Mvc.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller) +13 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9874329 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159

我已经验证我在两台计算机上都有相同的.NET Framework安装程序:版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.7.3056.0

该项目的目标是4.6.1

感谢您提供任何帮助或建议。

3 个答案:

答案 0 :(得分:0)

查看CaseNotesPlus \ Controllers \ AccountController.cs中的PasswordSignInAsync方法,可能在方法上方有一个action属性。也许它有某种机器名称规范检查。

答案 1 :(得分:0)

检查您的参考文献并确保您没有引用“gac”中的任何内容。这可以解释为什么它在一台机器上工作而在另一台机器上工作。

在我看来,您的问题与您的ef版本有关(身份需要的版本与游览代码所引用的版本不同)。检查你的装配绑定。

答案 2 :(得分:0)

确保您使用的是 Entity Framework版本6.2

我遇到了同样的问题,因为我使用的是Linq方法FirstOrDefaultAsync()和EntityFramework 6.1.3 (在6.2.0之前)

根据Microsoft关于“ QueryableExtensions.FirstOrDefaultAsync()”的文档: https://docs.microsoft.com/en-us/dotnet/api/system.data.entity.queryableextensions.firstordefaultasync?view=entity-framework-6.2.0

此方法仅适用于** EntityFramework 6.2版本**

  

适用于

     

实体框架

     

6.2.0