2012-06-13 8 views
7

Web APIプロジェクトを両方のクラウドWebサイトとクラウドホスティングサービスに展開しようとすると、このエラーが発生します。アズール:Azure WebSitesまたはAzureクラウドサービスのMVC4 API [エラー]: '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)"}" 

ここでは単にメッセージです:

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

私は、リモートサイトからの私のAPIのいずれかをヒットしようとすると、それが起こります。何が起こったのかに関係なく、私のAPIの中には何も投げないので、私は500エラーではないことを知っています。

これが何かに影響するかどうかはわかりませんが、.NET 4.5を対象としたこのプロジェクトを開始しましたが、Azure Webサイトが4.5をサポートしていないと言ったときに4.0に切り替えました。私はこのリンクを除き、このことについて何かを見つけることができません

http://support.appharbor.com/discussions/problems/4822-internal-server-error-500-mvc-4-web-api

その男を除いては、アプリ-港を使用している、andevenまだ解決策はまだありません。助けてくれてありがとう。

+0

はhttp://www.asp.net/でこの宝石を発見しましたホワイトペーパー/ mvc4-release-notes ASP.NET MVC 4プロジェクトを4.5からターゲット4.0に変更しても、EntityFrameworkアセンブリの参照は更新されません。4.5をターゲットにした後、ASP.NET MVC 4プロジェクトを4.0に変更すると、EntityFramworkアセンブリはまだ4.5バージョンを指します。この問題を解決するには、EntityFramework NuGetパッケージを再インストールします。 – d4rklit3

答えて

1

この問題は.NET 4.5から4.5へのロールバックとエンティティのロールバックが原因で発生しているようです。エンティティ5は.NET 4.5でのみ動作し、デプロイメントが4.3.1を予期していたときには5.0.0 DLLを持っていて、すべてがうんざりでした。

9

.NET 4.5から起動して問題が発生した場合は、この問題とリンクに関する公式ドキュメントをご覧ください。ターゲットとするASP.NET MVC 4プロジェクトを変更

4.5から4.0は 更新EntityFrameworkのアセンブリ参照しません:あなたはを参照 4.5をターゲットした後、4.0を対象とする ASP.NET MVC 4プロジェクトを変更した場合EntityFramworkアセンブリはまだ4.5バージョンを指します。 にこの問題を修正すると、EntityFramework NuGetパッケージが再インストールされます。

プロジェクトを.NET 4.0に切り替えた後でEntityFrameworkを再インストールすることは、そのトリックでした。

参考:私は.NET 4.0でMVC RCプロジェクトをコンパイルおよびVisual Studio 2012 RCがインストールされていませんでした、サーバー上のIISでそれをホストしようとしたとき、これは私に起こったhttp://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815

(注:サーバー上のVisual Studio 2012 RCをインストールすると、問題を修正しましたが、下位互換性のために上記の修正がはるかに優れている)

関連する問題