wake-up-neo.com

Microsoft.WindowsAzure.ServiceRuntime, Version = 1.8.0.0, konnte bei der Bereitstellung in der Cloud nicht geladen werden

Ich habe eine MVC 4-App, die lokal ordnungsgemäß ausgeführt wird, diese Nachricht jedoch fehlschlägt, wenn sie in Azure bereitgestellt wird:

[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

Ich habe sichergestellt, dass ich auf Microsoft.WindowsAzure.ServiceRuntime, Version 1.8, verwiesen habe und die Kopie lokal eingestellt habe. 

16
w.brian

Aus Ihrem Screenshot sieht es also so aus, als hätten Sie eine Website erstellt (die kein Cloud-Service oder keine Webrolle ist). Die Assemblys Microsoft.WindowsAzure.Diagnostics und Microsoft.WindowsAzure.ServiceRuntime können nicht in einer Website verwendet werden.

Wenn Sie eine Webrolle erstellen möchten, öffnen Sie Visual Studio> Datei> Neues Projekt> Cloud> Windows Azure Cloud Service> MVC-Webrolle hinzufügen> OK. Wenn Sie fertig sind, klicken Sie mit der rechten Maustaste auf das Azure-Projekt und wählen Sie Publish . Auf diese Weise können Sie einen neuen Cloud-Service erstellen, der Ihre Web-Rolle enthält. Wenn Sie Ihr Projekt so erstellen, können Sie die Microsoft.WindowsAzure.Diagnostics und Microsoft.WindowsAzure.ServiceRuntime Assemblys verwenden.

19

Überprüfen Sie die Verweise in Ihrem Projekt, und stellen Sie sicher, dass alle Azure-Verweise als Lokal kopieren = Wahr markiert sind. Da die App nach Runtime-Version 1.8 sucht, verwenden Sie offensichtlich mindestens eine Assembly aus SDK 1.8 - C:\Programme\Microsoft SDKs\Windows Azure.NET SDK\2012-10\ref ... HINWEIS: 2012-10 . Überprüfen Sie dann die verwendeten Referenzversionen:

  • Diagnose: 1.8.0.0
  • Laufzeit: 1.8.0.0

Dieser Assembly-Fehlanpassungsfehler tritt normalerweise auf, weil Sie auf verschiedene SDK-Versionen verwiesen haben und/oder Ihre Referenzen nicht als local = true markiert sind.

In Bezug auf die Azure-Taxonomie gibt es Websites (im Portal unter Websites) und es gibt Cloud Services, die entweder WebRoles (Websites, WCF-Services) oder WorkerRoles (Backend-Verarbeitung) haben können.

Für CloudServices werden die Betriebssystemfamilie und das GuestOS in der Datei ServiceConfiguration.cscfg im Element "ServiceConfiguration" angegeben:

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

osFamily 2 = Server 2008R2 und 3 = Server 2012. Die osVersion gibt den GuestOS an und sollte für die neueste Version fast immer "*" sein.

Wenn alles andere fehlschlägt und die richtige DLL in der Bin abgelegt ist, fügen Sie in der web.config eine Assembly-Bindungsumleitung hinzu:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="1.0.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>
12
viperguynaz

Können Sie beim Starten von DiagnosticMonitor die Fehlermeldung erhalten, dass Sie die Version 1.8 von Microsoft.WindowsAzure.Diagnostics referenzieren?

Es sollte sich unter C:\Programme\Microsoft SDKs\Windows Azure.NET SDK\2012-06\ref befinden.

0
Evan