C# Azure网站或Azure云服务上的MVC4API[错误]:';System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption';

C# Azure网站或Azure云服务上的MVC4API[错误]:';System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption';,c#,azure,asp.net-mvc-4,asp.net-web-api,azure-web-app-service,C#,Azure,Asp.net Mvc 4,Asp.net Web Api,Azure Web App Service,当我尝试将Web API项目部署到Azure上的云网站和云托管服务时,我遇到此错误: "{"ExceptionType":"System.TypeLoadException","Message":"Could not load type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' from assembly 'System.ComponentModel.DataAnnotations, Versio

当我尝试将Web API项目部署到Azure上的云网站和云托管服务时,我遇到此错误:

"{"ExceptionType":"System.TypeLoadException","Message":"Could not load type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' from assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.","StackTrace":"\r\nServer stack trace: \r\n   at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)\r\n   at System.Reflection.RuntimeAssembly.GetExportedTypes()\r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)\r\n   at System.Web.Http.WebHost.WebHostHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)\r\n   at System.Web.Http.Dispatcher.HttpControllerTypeCache.InitializeCache()\r\n   at System.Lazy`1.CreateValue()\r\n\r\nException rethrown at [0]: \r\n   at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)\r\n   at System.Reflection.RuntimeAssembly.GetExportedTypes()\r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)\r\n   at System.Web.Http.WebHost.WebHostHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)\r\n   at System.Web.Http.Dispatcher.HttpControllerTypeCache.InitializeCache()\r\n   at System.Lazy`1.CreateValue()\r\n   at System.Lazy`1.LazyInitValue()\r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.InitializeControllerInfoCache()\r\n   at System.Lazy`1.CreateValue()\r\n\r\nException rethrown at [1]: \r\n   at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(HttpRequestMessage request)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request, CancellationToken cancellationToken)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)"}"
这只是一条信息:

"Could not load type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' from assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'."
当我试图从远程站点访问任何API时,就会发生这种情况。我知道这不是我的500个错误,因为不管发生什么,我的一些API都不会抛出它们

有一件事需要注意,我不确定这是否会影响任何事情,那就是我启动了这个针对.NET4.5的项目,但当Azure网站表示不支持4.5时,我将其切换到了4.0

除此链接外,我找不到有关此的任何内容:


除了那个家伙正在使用AppHarbor,即使仍然没有解决方案。感谢您的帮助。

因此,问题似乎是由我从4.5回滚到.NET 4,而实体没有回滚引起的。实体5似乎只在.NET 4.5上运行,当部署预期为4.3.1时,它有一个5.0.0 DLL,它把一切都搞砸了。

关于从.NET 4.5开始并回滚导致问题的说法是正确的,下面是有关此问题的官方文档和链接

将ASP.NET MVC 4项目从4.5更改为目标4.0不会 更新EntityFramework程序集引用:如果更改 ASP.NET MVC 4项目目标为4.0后目标为4.5的参考 到EntityFramwork程序集仍将指向4.5版本到 修复此问题,重新安装EntityFramework NuGet软件包。

在将project切换到.NET 4.0后重新安装EntityFramework成功了

参考:

当我在.NET 4.0中编译一个MVC RC项目,并试图在未安装Visual Studio 2012 RC的服务器上将其托管在IIS中时,我就遇到了这种情况

(注意:在服务器上安装Visual Studio 2012 RC也解决了此问题,但为了向后兼容,上述修复方法要好得多。)

在将ASP.NET MVC 4项目从4.5更改为目标4.0时发现此gem不会更新EntityFramework程序集引用:如果在目标4.5之后将ASP.NET MVC 4项目更改为目标4.0,则对EntityFramwork程序集的引用仍将指向4.5版本。要解决此问题,请重新安装EntityFramework NuGet软件包。