2012-08-14 6 views
7

ich einige Labors in Windows Azure versucht und es funktioniert gut. Also beginne ich meine Anwendung mit Azure Emulator zu entwickeln.Windows Azure endet Verbindung und gibt einen 324-Fehlercode

Ich fahre meinen ersten heute Entfaltungstest in Windows Azure und habe eine erste Ausgabe:

No connection could be made because the target machine actively refused it 127.0.0.1:10000 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:10000 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[SocketException (0x274d): No connection could be made because the target machine actively refused it 127.0.0.1:10000] 
    System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) +2724507 
    System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +392 

[WebException: Unable to connect to the remote server] 
    Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() +96 
    Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() +271 
    Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.Delete(BlobRequestOptions options) +213 
    MyProject.Web.MvcApplication.InitBlobs() in C:\Sites\MyProject\MyProject\MyProject.Web\Global.asax.cs:85 
    MyProject.Web.MvcApplication.Application_Start() in C:\Sites\MyProject\MyProject\MyProject.Web\Global.asax.cs:52 

Es war der erste Einsatz, also habe ich versucht, einen Behälter zu löschen, die nicht existiert. Ich handle jetzt mit der Ausnahme.

Ich redeploy mein Projekt und erhält keinen Serverfehler. Es beendet nur die Verbindung und lässt mich diesen Fehler: Error 324 (net::ERR_EMPTY_RESPONSE)

Ich nehme an, dass ich etwas in meiner Konfiguration vermisse, aber ich konnte nicht finden, was es genau ist.

Vielen Dank für Ihre Hilfe!

Bearbeiten: Die Bereitstellung selbst ist die erste für diese Anwendung, aber es ist nicht die erste, die ich auf Windows Azure ausführen. Ich habe bereits einige MSDN-Labs bereitgestellt, als ich mit der Entwicklung für Windows Azure begonnen habe.

+0

ich aus der bemerkt Stack-Trace, dass es aussieht wie du anrufst Blob-Speicher von global.asax.cs - Könnten Sie dies stattdessen von einer Controller-Aktion aus versuchen und sehen, ob Sie den gleichen Fehler bekommen? Außerdem sah ich die Meldung "Verbindung zum Remote-Server nicht herstellen". Sind Sie sicher, dass der Kontoname und der Kontoschlüssel korrekt sind und beide vom selben Speicherkonto stammen? Ich habe das schon mal vermasselt und seltsame Fehler bekommen ... –

+0

Ich versuche den Aufruf von Blobspeicher in meinen 'HomeController' zu verschieben, aber es ändert nichts. Ich habe bereits meine Anmeldeinformationen überprüft. Sie sind alle gültig und mit demselben Konto verknüpft. Ich habe auch versucht, meine Connexion-Zeichenfolge direkt in der 'global.asax'-Methode zu setzen, anstatt einen Schlüssel des' Konfigurations-Managers' aufzurufen, aber es funktioniert nicht. Etwas, das ich nicht verstehen kann, ist, warum die App versucht, eine Verbindung zu '127.0.0.1: 10000' herzustellen, während ich Windows Azure verwende. – Florent

Antwort

3

Ok, ich habe herausgefunden, was mein Fehler war.

In meinem Wunsch der Abstraktion, entwarf ich eine Lösung, wo ich die Blob-Verbindung nur ein paar Mal in meiner App verwendet. Es gab 3 Aufrufe an den Blobspeicher.

  • Ein in meiner Global.asax
  • Ein in einer BlobService
  • One in einem ExtensionMethod

Ich habe mehrmals meine Global.asax und BlobService aber die Extension vergessen. Ich schrieb es am Anfang meines Projektes und ich Zugriff auf mein Klecks Konto nur in der Entwicklung durch die folgende Anweisung: CloudStorageAccount.DevelopmentStorageAccount statt CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlobConnection"))

Chris Koening answer teilweise richtig war, weil ich versuche, Entwicklung Speicher zugreifen, während ich war in der Wolke. Wenn Sie das gleiche Problem beschreiben in dieser Frage haben, wäre mein Rat sein:

  1. Execute Chris Antwort
  2. Wenn es nicht Ihr Problem nicht lösen, versuchen Sie die DevelopmentStorageAccount Zeichenfolge in Ihrer gesamten Lösung über Visual Studio zu finden Suchwerkzeug oder Agent Ransack und ersetzen Sie es mit dem Schlüssel, den Sie in der ersten Stufe definiert
  3. wenn es immer noch nicht Ihr Problem nicht lösen, versuchen Sie zu finden, wenn es eine Referenz überall auf der DevelopmentStorage ist sonst
+1

Ich habe denselben Fehler, wenn ich versuche, auf dem lokalen Host mit Azure Storage Emulator zu laufen. Es passiert beim Aufruf "container.CreateIfNotExists()". Nach vielen Schwierigkeiten stellt sich heraus, dass der Emulator in meinem Fall nicht gestartet wurde. Klicken Sie mit der rechten Maustaste auf das Azure-Taskleistensymbol und dann auf Speicheremulator starten. Einmal gestartet, funktioniert es gut. – newman

0

Ihr Problem bezieht sich nur auf die auf Ihrem Computer installierte Komponente und nicht auf Windows Azure Specific. Ich kann einige Hinweise zur Behebung eines solchen Problems geben, aber es wäre sehr schwierig, eine bestimmte Ursache zu ermitteln.

Was Sie es schaffen, nur eine sehr einfache Web Role Anwendung von Vorlage direkt tun können, und es dann in Windows Azure Emulator laufen zu sehen, ob das funktioniert gut oder nicht. Auf diese Weise können Sie unterscheiden, ob Ihr Problem für Ihren Code spezifisch ist oder nicht. Wenn Sie genau das gleiche Problem mit einer einfachen Test-App haben, dann ist Ihr Problem mehr von Windows Azure-Komponenten.

Sie können auch Ihre Anwendungseinstellung so ändern, dass sie entweder auf IISExpress (Standard) oder IIS Server ausgeführt wird, um festzustellen, ob sich das Problemverhalten geändert hat. Wenn Sie genau denselben Fehler mit IIS Server und IIS Express erhalten, können Sie sich auf Ihre Windows Azure-Komponenten konzentrieren, um das Problem zu beheben.

+0

Ich habe vergessen, es zu erwähnen, ich habe bereits einige Labs von msdn bereitgestellt und es funktionierte einwandfrei. – Florent

5

OK - Ich konnte dies reproduzieren, und das Problem liegt in der Konfiguration Ihres Cloud-Bereitstellungsprojekts.

My version of the error

Der Grund, warum ich diesen Fehler habe ist, weil ich die Speicherverbindungszeichenfolge auf "UseDevelopmentStorage=true;" zu zeigen. Stattdessen müssen Sie den Connection String-Tool in Ihrem Azure-Bereitstellungsprojekt verwenden, um zu ändern, wo die ConfigurationManager String seine Verbindung bekommt und man muss für die lokale Entwicklung und eine andere in die Cloud für die Bereitstellung von:

  • Öffnen Sie die Windows Azure-Projekt und finden Sie die Rollen Knoten.
  • Doppelklick auf WebRole Projekt
  • Klicken Sie auf das Konfigurationsfenster auf die Einstellungen zu öffnen Registerkarte, um alle die verschiedenen Einstellungen für Ihr Projekt definiert zu zeigen.Sie werden wahrscheinlich so etwas wie dies sehen:

Configuration Panel

  • Mitteilung über das Service Configuration Kombinationsfeld an der Spitze. Meine Einstellungen, wie im Bild angezeigt, zeigen derzeit an, dass die Einstellung StorageConnectionString auf sowohl Cloud- als auch lokale Bereitstellungen angewendet wird. Das ist schlecht.
  • Siehe den darunterliegenden? Der zweite? Dieser zeigt <Select Configuration> in der Spalte Wert an, da der Wert von der Konfiguration abhängt, die Sie ausführen.

Um dies zu beheben, ist es eine Frage von der Service-Konfiguration zu Cloud ändern und dann die Einstellungen an:

  • Ändern der Service Configuration Einstellung Wolke
  • Klicken Sie auf die Ellipsen am Ende der StorageConnectionString Einstellung und wählen Sie Geben Sie Speicheranmeldeinformationen.

Configuration Settings

  • speichern Dialog und die Konfigurationseinstellungen Seite und zurück in den Code gehen, wo Sie den CloudStorageAccount Client erstellen.
  • An der Stelle, dass Sie die Verbindungszeichenfolge den Client erstellen erhalten müssen, verwenden Sie den folgenden Ausschnitt:

    // storage abrufen Konto von Verbindungs-string CloudStorageAccount storageAccount = CloudStorageAccount.Parse ( CloudConfigurationManager.GetSetting ("StorageConnectionString"));

  • Die storageAccount wird jetzt aus der richtigen Verbindungszeichenfolge geladen, je nachdem, ob Sie in Cloud oder lokal veröffentlichen.

Wenn der Implementierungsassistent läuft, wird es automatisch in der Wolke Einstellungen ziehen, während für den Betrieb im Debugger die Lokale Einstellungen erhalten bleiben.

Probieren Sie es aus und lassen Sie mich wissen, wenn es nicht für Sie funktioniert. Ich würde mich freuen, an einem Lync-Meeting teilzunehmen, um durch Ihren Code zu gehen und diesen Fehler zu beheben, wenn Sie dafür offen sind ...

+0

Ich habe meine Speicher-Credentials bereits in verschiedenen Konfigurationen definiert (ich habe drei Konfigurationen, eine für die lokale Entwicklung, eine für Tests und eine für die Produktion. Testen und Produzieren sind separate Windows Azure-Konten). Ich vermutete, dass es einen Versuch gab, sich mit localhost zu verbinden, also versuche ich, meine Testzulassung direkt in meiner Anwendung zu programmieren und führe sie in Windows Azur aus, aber ich habe immer noch das gleiche Problem. – Florent

+0

Ich habe auf meine Einstellung von der RoleEnvironment anstelle von CloudConfigurationManager wie folgt zugegriffen: 'CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse (RoleEnvironment.GetConfigurationSettingValue (" BlobConnection "));'. Ich hoffe nicht, dass sich daran irgendetwas ändern wird, aber ich versuche bereits, die Einstellung aufzurufen. Ich stelle mein Projekt auf Azure bereit und lasse Sie wissen, ob es Änderungen gibt. – Florent

+0

Die neue Implementierung, die ich getestet habe, ändert nichts. Ich habe auch versucht, meine Testing-Credentials in meine lokale Verbindungszeichenfolge anstatt UseDevelopmentStorage = true zu setzen. Es wird berechnet, aber der Blob, den ich im Container gespeichert habe (der sich in meinem Testaccount-Blob befindet), wird im Speicheremulator gespeichert. Ich überprüfe im Debug-Modus, die gezogene Zeichenfolge aus Cloud-Einstellungen ist meine Test-Verbindungszeichenfolge. Also, ich verstehe nicht, warum es keinen Fehler gibt, und warum ich meinen Blob an einem anderen Ort speichere, den ich möchte. – Florent

Verwandte Themen