ローカルで正常に動作するMVC 4アプリがありますが、Azureにデプロイすると次のメッセージで失敗します。
[FileNotFoundException: Could not load file or Assembly Microsoft.WindowsAzure.ServiceRuntime, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.] Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.GetDefaultStartupInfoForCurrentRoleInstance() +0 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener..ctor() +40
Microsoft.WindowsAzure.ServiceRuntimeバージョン1.8を参照し、ローカルにコピーするように設定しました。
スクリーンショットから、Webサイトを作成したように見えます(これはクラウドサービスでもWebロールでもありません)。アセンブリMicrosoft.WindowsAzure.DiagnosticsおよびMicrosoft.WindowsAzure.ServiceRuntimeは、Webサイトでは使用できません。
Webロールを作成する場合は、[Visual Studio]> [ファイル]> [新しいプロジェクト]> [クラウド]> [Windows Azureクラウドサービス]> [MVC Webロールの追加]> [OK]を開きます。完了したら、Azureプロジェクトを右クリックしてPublishを選択します。これにより、Webロールを含む新しいクラウドサービスを作成できます。このようなプロジェクトを作成すると、Microsoft.WindowsAzure.DiagnosticsおよびMicrosoft.WindowsAzure.ServiceRuntimeアセンブリを使用できるようになります。
プロジェクトの参照を確認し、すべてのAzure参照がCopy Local = Trueとマークされていることを確認します。また、アプリはランタイムバージョン1.8を探しているため、SDK 1.8の少なくとも1つのアセンブリ-C:\ Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-10\ref ... 注:2012-1。次に、使用中の参照バージョンを確認します。
このアセンブリの不一致は、異なるSDKバージョンが参照されているか、refがcopy local = trueとマークされていないために発生します。
Azureの分類に関しては、Webサイト(ポータル上のWebサイトの下)と、WebRoles(Webサイト、WCFサービス)またはWorkerRoles(バックエンド処理)のいずれかを持つことができるクラウドサービスがあります。
CloudServicesの場合、OSファミリーとGuestOSは「ServiceConfiguration」要素のServiceConfiguration.cscfgファイルで指定されます。
<ServiceConfiguration serviceName="MyWebRole" xmlns="http://schemas.Microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8">
osFamily 2 = Server 2008R2および3 = Server2012。osVersionはGuestOSを指定し、最新バージョンではほとんどの場合「*」である必要があります。
他のすべてが失敗し、正しいDLLがビンに含まれている場合は、web.configにアセンブリバインディングリダイレクトを追加してみてください。
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>
DiagnosticMonitorを開始しようとするとエラーが発生するので、1.8バージョンのMicrosoft.WindowsAzure.Diagnosticsも参照していることを確認できますか?
C:\ Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-06\refにあります。