2012-06-13 3 views
7

Je reçois cette erreur lorsque j'essaie de déployer mon projet d'API Web sur Cloud WebSites et Cloud Hosted Services sur Azure:API MVC4 sur Azure WebSites ou Azure Cloud Services [Erreur]: '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)"}" 

Voici juste le message:

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

Il arrive lorsque je tente de frapper l'un de mes API du site distant. Je sais que ce n'est pas mes erreurs 500 parce que certaines de mes API ne les lancent pas, quoi qu'il arrive. Une chose à noter et je ne suis pas sûr si cela affecterait quoi que ce soit est que j'ai commencé ce projet ciblé sur .NET 4.5, mais l'ai ensuite basculé sur 4.0 quand Azure Web Sites a déclaré ne pas prendre en charge 4.5.

Je ne trouve rien à ce sujet, sauf ce lien: http://support.appharbor.com/discussions/problems/4822-internal-server-error-500-mvc-4-web-api

sauf ce type utilise app-port, andeven encore il n'y a toujours pas de solution. Merci de toute aide.

+0

trouvé ce petit bijou à http://www.asp.net/ whitepapers/mvc4-release-notes La modification d'un projet ASP.NET MVC 4 en cible 4.0 à partir de la version 4.5 ne met pas à jour la référence d'assembly EntityFramework: Si vous modifiez un projet ASP.NET MVC 4 en cible 4.0 après avoir ciblé 4.5 la référence à EntityFramwork l'assemblage pointera toujours vers la version 4.5. Pour résoudre ce problème, réinstallez le package EntityFramework NuGet. – d4rklit3

Répondre

1

Il semblait donc que le problème était dû au fait que je revenais à .NET 4 à partir de la version 4.5 et que l'entité ne revenait pas en arrière. Il semble que l'Entity 5 ne fonctionne que sur .NET 4.5 et quand le déploiement attendait 4.3.1, il avait une DLL 5.0.0 et tout chamboulait.

9

Vous avez raison de commencer dans .NET 4.5 et de revenir en arrière causant le problème, voici la documentation officielle sur ce problème et un lien.

Modification d'un projet ASP.NET MVC 4 pour cibler 4.0 de 4.5 ne pas mise à jour la référence d'assemblage EntityFramework: Si vous modifiez un projet ASP.NET MVC 4 pour cibler 4.0 après la référence 4.5 ciblage au L'assembly EntityFramwork pointera toujours vers la version 4.5. À résoudre ce problème réinstallez le package EntityFramework NuGet. La réinstallation d'EntityFramework après avoir basculé le projet sur .NET 4.0 a réussi l'opération suivante:

Référence: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815

Ce qui est arrivé à moi quand je compilé un projet MVC RC dans .NET 4.0 et essayé de l'héberger dans IIS sur un serveur qui n'a pas Visual Studio 2012 RC installé.

(Remarque:. L'installation de Visual Studio 2012 RC sur le serveur fixe aussi la question, mais pour rétrocompatibilité le correctif ci-dessus est beaucoup mieux)