2012-06-13 9 views
7

Viene visualizzato questo errore quando provo a distribuire il mio progetto API Web su Cloud WebSites e Cloud Hosted Services su Azure:MVC4 API su Azure WebSites o Azure Cloud Services [Errore]: '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)"}" 

qui è solo il messaggio:

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

succede quando cerco di colpire uno dei miei API dal sito remoto. So che non sono i miei 500 errori perché alcune delle mie API non li getteranno a prescindere da cosa succede.

Una cosa da notare e non sono sicuro se ciò influirebbe su qualcosa è che ho avviato questo progetto mirato su .NET 4.5 ma poi lo ho commutato su 4.0 quando i siti Web di Azure hanno dichiarato di non supportare 4.5.

Non riesco a trovare nulla su questo, tranne questo link: http://support.appharbor.com/discussions/problems/4822-internal-server-error-500-mvc-4-web-api

tranne quel ragazzo sta utilizzando app-porto, andeven ancora non v'è ancora una soluzione. Grazie a qualsiasi aiuto.

+0

trovato questo gioiello a http://www.asp.net/ whitepapers/mvc4-note di rilascio La modifica di un progetto ASP.NET MVC 4 su target 4.0 dalla 4.5 non aggiorna il riferimento all'assieme EntityFramework: Se si modifica un progetto ASP.NET MVC 4 su target 4.0 dopo aver indirizzato 4.5 il riferimento a EntityFramwork il montaggio rimarrà comunque nella versione 4.5. Per risolvere questo problema, reinstallare il pacchetto NuGet di EntityFramework. – d4rklit3

risposta

1

Quindi il problema è stato causato dal ripristino a .NET 4 dalla 4.5 e dall'entità che non si ripristina. Sembra che Entity 5 gira solo su .NET 4.5 e quando la distribuzione si aspettava 4.3.1 aveva una DLL 5.0.0 e ha incasinato tutto.

9

Hai ragione riguardo l'avvio in .NET 4.5 e il rollback che causa il problema, ecco la documentazione ufficiale su questo problema e un collegamento.

Cambiare un progetto ASP.NET MVC 4 per indirizzare 4,0 da 4,5 non aggiornamento il riferimento di montaggio EntityFramework: Se si modifica un progetto ASP.NET MVC 4 a bersaglio 4.0 dopo rivolte a 4.5 il riferimento al L'assembly EntityFramwork punta ancora alla versione 4.5. A risolvere questo problema reinstallare il pacchetto NuGet EntityFramework.

La reinstallazione di EntityFramework dopo il passaggio del progetto a .NET 4.0 ha funzionato.

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

Questo è successo a me quando ho compilato un progetto MVC RC in .NET 4.0 e cercato di ospitarlo in IIS su un server che non hanno installato Visual Studio 2012 RC.

. (Nota: l'installazione di Visual Studio 2012 RC sul server anche risolto il problema, ma per compatibilità con le versioni di cui sopra correzione è molto meglio)

Problemi correlati