2016-05-23 7 views
2

Ich habe einen fortlaufend ausgeführten Job (Dienst), den ich als App Service für Azure bereitstellen möchte. Es wurde in Visual Studio als eine typische Konsolenanwendung erstellt und verwendet anschließend TopShelf als Dienst.Fehler nur im Azure App Service: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt

Derzeit wird dieser Dienst in einer Windows-Box in Rack Space bereitgestellt. Aber wir entfernen uns von diesem Modell in Richtung Azure. Sowohl beim Debugging auf meinem lokalen Rechner als auch auf dem Rack Space Windows Server läuft es einwandfrei. Bei der Bereitstellung in Azure erhalte ich jedoch den Objektreferenzfehler.

Der Zweck dieses Dienstes in unglaublich einfach: Fragen Sie einen Azure Service Bus für Nachrichten ab, wenn es welche gibt, legen Sie sie in eine Liste und übergeben Sie die Liste dann an eine andere Klasse, die sie verarbeitet. Das ist es. Die eigentliche Durchführung des Servicebusses erfolgt nicht innerhalb dieses Projekts oder dieser Klasse. Das hängt von QueueAccess ab, einer separaten Klasse.

Auch dies funktioniert in jedem Fall anders als bei der Bereitstellung als App Service für Azure. Identischer Code auf der ganzen Linie. Ich denke, dass ich den Einsatz vielleicht falsch mache? Und aus irgendeinem Grund wird die .dll für QueueAccess nicht zusammen mit der Bereitstellung gesendet? Wenn ich mich über FTP anmelde, kann ich sehen, dass es dort zusammen mit dem Rest der Dateien sitzt.

ist der komplette Protokolleintrag:

2016-05-20T20:56:08 PID[10568] Information at XXXXXX.Queue.Core.MessageQueueQuery.ProcessMessages() in C:\XXXXXXGit\XXXXXX\Main\XXXXXX.Queue.Core\MessageQueueQuery.cs:line 108 

2016-05-20T20:56:08 PID[10568] Information 2016-05-20 20:56:08,156 [5] ERROR XXXXXX.Queue.WindowsService.Bootstrapper [(null)] - Error in retrieving a list of messages from queue. 

Ich bin nicht sicher, warum es nicht funktioniert.

+0

Verwenden Sie Topshelf für Azure https laufen : //github.com/Topshelf/Topshelf.Azure? –

+0

Ich wusste nichts davon. Ich werde das überprüfen. –

+0

Die Antwort ist "Nein". Aber ... wäre es wichtig? Die App läuft als Dienst. Wenn nicht, hätte es diesen Fehler nicht protokolliert. Würde eine Azure-spezifische Version von TopShelf (oder deren Fehlen) dazu führen, dass Drittanbieter-DLLs funktionieren oder fehlschlagen? –

Antwort

1

Ich bin kein Topshelf Benutzer ABER:

In Rackspace, ich denke, Ihre Anwendung läuft in einer VM (IaaS). Im App-Dienst wird Ihre App in PaaS ausgeführt, nicht in IaaS.

  1. Sie können versuchen, die App zu einem Azure VM anstatt zu implementieren.

  2. Oder überprüfen Sie die TopShelf-Kompatibilität mit Azure PaaS. Sie scheinen eine Lösung für Arbeiter Rollen zur Verfügung zu stellen (= Teil Azure PaaS v1) https://github.com/Topshelf/Topshelf.Azure

  3. Sie auch nativer Azure PaaS v2 Lösungen überprüfen können Web-Jobs https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/

+0

Ok, also TopShelf für TopShelf.Azure auszuwechseln hat sicher Sachen in Bewegung gebracht. Es löste dieses Problem, plus ein anderes, das ich auch mit Log4net sah, das ich noch nicht in Angriff genommen hatte. Vielen Dank!! –

Verwandte Themen