Azure 网站或 Azure 云服务上的 MVC4 API [错误] : 'System.ComponentM
本文关键字:Azure ComponentM System 错误 API 网站 服务 MVC4 | 更新日期: 2023-09-27 18:37:10
当我尝试将 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 都不会抛出它们。
需要注意的一件事,我不确定这是否会影响任何事情,我开始了针对 .NET 4.5 的项目,但当 Azure 网站说他们不支持 4.5 时,我将其切换到 4.0。
除了这个链接,我找不到任何关于这个的东西:http://support.appharbor.com/discussions/problems/4822-internal-server-error-500-mvc-4-web-api
除了那个家伙正在使用应用程序港,即使仍然没有解决方案。感谢任何帮助。
您关于从 .NET 4.5 开始并回滚导致问题是正确的,这是有关此问题的官方文档和链接。
将 ASP.NET MVC 4 项目从 4.5 更改为面向 4.0 不会 更新实体框架程序集引用:如果更改 ASP.NET MVC 4 项目以 4.0 为目标 4.0 参考 到 EntityFramwork 程序集仍将指向 4.5 版本。自 修复此问题重新安装实体框架 NuGet 包。
在将项目切换到 .NET 4.0 后重新安装 EntityFramework 就可以了。
参考: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815
当我在.NET 4.0中编译一个MVC RC项目并尝试在未安装Visual Studio 2012 RC的服务器上的IIS中托管它时,我就遇到了这种情况。
(注意:在服务器上安装 Visual Studio 2012 RC 也修复了此问题,但为了向后兼容,上述修复要好得多。
所以问题似乎是由于我从 4.5 回滚到 .NET 4 和实体没有回滚引起的。实体 5 似乎只在 .NET 4.5 上运行,当部署期望 4.3.1 时,它有一个 5.0.0 DLL,它搞砸了一切。