16

ローカルでは問題なく動作する 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 を参照し、ローカルにコピーするように設定したことを確認しました。

4

3 に答える 3

19

スクリーンショットから、Web サイト (クラウド サービスまたは Web ロールではない) を作成したように見えます。アセンブリMicrosoft.WindowsAzure.DiagnosticsおよびMicrosoft.WindowsAzure.ServiceRuntimeは、Web サイトでは使用できません。

Web ロールを作成する場合は、Visual Studio > [ファイル] > [新しいプロジェクト] > [クラウド] > [Windows Azure クラウド サービス] > [MVC Web ロールの追加] > [OK] を開きます。完了したら、Azure プロジェクトを右クリックして [発行] を選択します。これにより、Web ロールを含む新しいクラウド サービスを作成できます。このようにプロジェクトを作成すると、Microsoft.WindowsAzure.Diagnostics アセンブリと Microsoft.WindowsAzure.ServiceRuntime アセンブリを使用できるようなります

于 2013-01-07T20:49:42.457 に答える
12

プロジェクト内の参照を確認し、すべての Azure 参照が Copy Local = True とマークされていることを確認してください。また、アプリはランタイム バージョン 1.8 を探しているため、SDK 1.8 から少なくとも 1 つのアセンブリを使用していることは明らかです - C:\Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-10\ref... NOTE: 2012- 10 . 次に、使用中の参照バージョンを確認します。

  • 診断: 1.8.0.0
  • ランタイム: 1.8.0.0

このアセンブリの不一致は通常、異なる SDK バージョンが参照されているか、ref が copy local = true とマークされていないために発生します。

Azure 分類に関しては、Web サイト (Web サイトの下のポータル) と、WebRoles (Web サイト、wcf サービス) または WorkerRoles (バックエンド処理) のいずれかを持つことができるクラウド サービスがあります。

CloudServices の場合、OS ファミリと GuestOS は ServiceConfiguration.cscfg ファイルの "ServiceConfiguration" 要素で指定されます。

<ServiceConfiguration serviceName="MyWebRole" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8">

osFamily 2 = Server 2008R2 and 3 = Server 2012. 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>
于 2013-01-07T16:21:36.750 に答える
0

DiagnosticMonitor を起動しようとするとエラーが発生するので、Microsoft.WindowsAzure.Diagnosticsの 1.8 バージョンも参照していることを確認できますか?

C:\Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-06\refにある必要があります。

于 2013-01-07T13:52:27.580 に答える