7

Cloud WebSites と Cloud Hosted Services on Azure の両方に Web API プロジェクトをデプロイしようとすると、次のエラーが発生します。

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

その男がアプリハーバーを使用していることを除いて、それでもまだ解決策はありません。助けてくれてありがとう。

4

2 に答える 2

9

.NET 4.5 で開始し、ロールバックして問題を引き起こしたことについては正しいです。この問題に関する公式ドキュメントとリンクを次に示します。

ASP.NET MVC 4 プロジェクトをターゲット 4.5 から 4.0 に変更しても、EntityFramework アセンブリ参照が更新されない: 4.5 をターゲットにした後で ASP.NET MVC 4 プロジェクトをターゲット 4.0 に変更すると、EntityFramwork アセンブリへの参照は引き続き 4.5 バージョンを指します。 . この問題を解決するには、EntityFramework 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 をインストールしても問題は修正されましたが、下位互換性のために上記の修正の方がはるかに優れています。)

于 2012-07-10T23:26:04.320 に答える
1

そのため、4.5 から .NET 4 にロールバックし、Entity がロールバックしなかったために問題が発生したようです。エンティティ 5 は .NET 4.5 でのみ実行され、展開が 4.3.1 を予期していたときに 5.0.0 DLL があり、すべてが台無しになったようです。

于 2012-06-14T00:43:37.273 に答える