找不到方法:'System.Threading.Tasks.Task` System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync

时间:2017-11-17 01:21:35

标签: c# asp.net .net entity-framework webforms

我使用Visual Studio 2017,.NET 4.6.1和EF 6.2创建了一个Web窗体应用程序。每当我在本地运行应用程序时,它工作正常,但是当我发布应用程序并上传到我们的IIS服务器时,我收到屏幕截图中显示的错误。

Error Screenshot

Server Error in '/' Application.
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>>)'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.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>>)'.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[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) +174
   Microsoft.AspNet.Identity.EntityFramework.UserStore`6.GetUserAggregateAsync(Expression`1 filter) +199
   Microsoft.AspNet.Identity.Owin.<PasswordSignInAsync>d__29.MoveNext() +150
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13847892
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
   Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +212
   SupplierPortal.Account.Login.LogIn(Object sender, EventArgs e) in C:\Users\Kobi\Dropbox\Development\WebForms\SupplierPortal_git\SupplierPortal\Account\Login.aspx.cs:39
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +138
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150
   System.Web.UI.<ProcessRequestMainAsync>d__523.MoveNext() +7834

到目前为止,我已经尝试过:

  • 将EF降级为较早版本。
  • 检查任何遗失的使用陈述。
  • 从我的引用中删除并添加关联的.dll文件。
  • 重新编码应用程序以定位早期版本的.NET
  • 手动将链接添加到web.config
  • 中的.dll文件
  • 设置所有引用的.dll以复制本地
  • 确保应用程序池设置为V4.0
  • 确保IIS安装了最新的.NET

我注意到堆栈跟踪中的这一行:

SupplierPortal.Account.Login.LogIn(Object sender, EventArgs e) in C:\Users\Kobi\Dropbox\Development\WebForms\SupplierPortal_git\SupplierPortal\Account\Login.aspx.cs:39

引用Web服务器上不存在的文件路径,而不是我的本地系统,但是在VS中找不到任何属性来更改或设置它。

在IIS服务器上运行另一个Web表单应用程序,它针对早期版本的.NET和EF。这个应用程序运行正常,但我的理解是,在我的应用程序中似乎导致问题的异步方法是在更高版本的EF中引入的。

对这个问题的任何帮助都非常感谢我过去几天一直在绞尽脑汁!

1 个答案:

答案 0 :(得分:1)

在解决问题之后,我最终创建了一个新的EC2实例。上传后,该应用程序运行无问题。我假设较旧的实例存在一些配置问题。