2012-06-13 8 views
7

Recibo este error cuando trato de implementar mi proyecto de API web tanto en Cloud WebSites como en Cloud Hosted Services en Azure:API de MVC4 en Azure WebSites o Azure Cloud Services [Error]: 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption'

"{"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)"}" 

aquí es sólo el mensaje:

"Could not load type 'System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption' from assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'." 

sucede cuando trato de golpear a cualquiera de mi API desde el sitio remoto. Sé que no son mis 500 errores porque algunas de mis API no los lanzarán independientemente de lo que suceda.

Una cosa a tener en cuenta y no estoy seguro de si esto afectaría algo es que comencé este proyecto dirigido a .NET 4.5 pero luego lo cambié a 4.0 cuando los sitios web de Azure dijeron que no son compatibles con 4.5.

no puedo encontrar nada sobre esto, excepto este enlace: http://support.appharbor.com/discussions/problems/4822-internal-server-error-500-mvc-4-web-api

excepción de que tipo es el uso de App-puerto, andeven todavía aún no existe una solución. Gracias de cualquier ayuda.

+0

encontramos esta joya en http://www.asp.net/ whitepapers/mvc4-release-notes Cambio de un proyecto ASP.NET MVC 4 para apuntar 4.0 de 4.5 no actualiza la referencia de ensamblado ADO.NET Entity Framework: Si cambia un proyecto ASP.NET MVC 4 para apuntar 4.0 después de que apuntan a 4.5 la referencia a la EntityFramwork el ensamblaje aún apunta a la versión 4.5. Para solucionar este problema, reinstale el paquete EntityFramework NuGet. – d4rklit3

Respuesta

1

por lo que parecía que el problema fue causado por mí hacer retroceder a .NET 4 de 4,5 y la Entidad no ruede hacia atrás. Parece que Entity 5 solo se ejecuta en .NET 4.5 y cuando la implementación esperaba 4.3.1 tenía una DLL de 5.0.0 y lo estropeaba todo.

9

Tienes razón acerca de cómo iniciar en .NET 4.5 y hacer retroceder la causa del problema, aquí es la documentación oficial sobre este tema y un enlace.

Cambio de un proyecto ASP.NET MVC 4 para apuntar 4.0 de 4.5 no actualización de la referencia de ensamblado ADO.NET Entity Framework: Si cambia un proyecto de 4 ASP.NET MVC 4.0 para apuntar después que apuntan a 4.5 la referencia a la El ensamblado de EntityFramwork aún apuntará a la versión 4.5. Para soluciona este problema reinstala el paquete EntityFramework NuGet.

La reinstalación de EntityFramework después de cambiar el proyecto a .NET 4.0 hizo el truco.

Referencia: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815

Esto sucedió a mí cuando he realizado un proyecto de MVC RC en .NET 4.0 y trató de ser el anfitrión en IIS en un servidor que no tiene instalado Visual Studio 2012 RC.

. (Nota: Instalar Visual Studio 2012 RC en el servidor también ha solucionado el problema, pero para la compatibilidad hacia atrás por encima de la solución es mucho mejor)

Cuestiones relacionadas