2012-08-14 16 views
7

Ho provato alcuni laboratori in Windows Azure e funziona correttamente. Quindi, inizio a sviluppare la mia applicazione con Azure Emulator.Windows Azure termina la connessione e restituisce un codice di errore 324

ho svolgere il mio primo test distribuzione oggi in Windows Azure e avere un primo problema:

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 

E 'stata la prima distribuzione, così ho provato a cancellare un contenitore che non esiste. Ora gestisco l'eccezione.

Ricalcolo il mio progetto e non si verifica alcun errore del server. Termina semplicemente la connessione e mi lascia questo errore: Error 324 (net::ERR_EMPTY_RESPONSE)

Presumo che mi manca qualcosa nella mia configurazione ma non sono riuscito a trovare quello che è esattamente.

Grazie per il vostro aiuto!

Modifica: La distribuzione stessa è la prima per questa applicazione, ma non è la prima che eseguo su Windows Azure. Ho già distribuito alcuni laboratori msdn quando avvio lo sviluppo per Windows Azure.

+0

ho notato dal pila traccia che sembra che stai chiamando Archiviazione BLOB da global.asax.cs - potresti provare a farlo da un'azione del controller e vedere se ottieni lo stesso errore? Inoltre, ho visto il messaggio "Impossibile connettersi al server remoto". sei sicuro che il nome dell'account e la chiave dell'account sono precisi e entrambi dallo stesso account di archiviazione? Ho incasinato tutto questo e ho ottenuto strani errori ... –

+0

Cerco di spostare la chiamata di memoria BLOB nel mio 'HomeController' ma non cambia nulla. Ho già controllato le mie credenziali. Sono tutti validi associati allo stesso account. Ho anche provato a mettere la mia stringa di connessione direttamente nel metodo 'global.asax' invece di chiamare una chiave di' configuration manager' ma non funziona. Qualcosa che non riesco a capire è il motivo per cui l'app tenta di connettersi a '127.0.0.1: 10000' mentre sto usando Windows Azure – Florent

risposta

3

Ok, ho capito qual era il mio errore.

Nel mio desiderio di astrazione, ho progettato una soluzione in cui ho usato la connessione BLOB solo per pochissimo tempo nella mia app. C'era 3 chiamate alla memoria BLOB.

  • uno nella mia Global.asax
  • One in a BlobService
  • Uno in un ExtensionMethod

ho controllato più volte il mio Global.asax e BlobService ma ho dimenticato l'ExtensionMethod. L'ho scritto all'inizio del mio progetto e mi hanno accesso al mio conto blob solo nello sviluppo tramite l'istruzione seguente: CloudStorageAccount.DevelopmentStorageAccount invece di CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlobConnection"))

Chris Koening answer era in parte ragione, perché stavo cercando di accedere allo storage di sviluppo mentre io ero nel Cloud. Se avete lo stesso problema descrivere in questa domanda, il mio consiglio è:

  1. Esegui Chris risposta
  2. Se non risolve il problema, cercare di trovare la stringa DevelopmentStorageAccount nella vostra intera soluzione tramite Visual Studio strumento di ricerca o Agent Ransack e sostituirla con la chiave definiti nel primo passo
  3. Se ancora non risolve il problema, cercare di trovare se non v'è alcun riferimento alla DevelopmentStorage altrove
+1

Ho ricevuto lo stesso errore quando provo a eseguire su localhost utilizzando l'Emulatore di archiviazione di Azure. Accade su chiamata "container.CreateIfNotExists()". Dopo molte difficoltà, nel mio caso, l'emulatore non è stato avviato. Fare clic con il pulsante destro del mouse sull'icona della barra delle applicazioni di Azure e fare clic su Avvia emulatore di memoria. Una volta avviato, funziona correttamente. – newman

0

Il problema è specifico del componente installato sulla macchina, piuttosto che di Windows Azure specifico. Posso fornire alcuni suggerimenti per risolvere questo problema, tuttavia sarebbe molto difficile individuare una causa root specifica.

Ciò che si può fare è semplicemente creare un'applicazione di Web Ruolo molto semplice direttamente dal modello e quindi eseguirla in Windows Azure Emulator per vedere se funziona correttamente oppure no. In questo modo puoi distinguere se il tuo problema è specifico o meno del tuo codice. Se si verifica lo stesso identico problema con una semplice app di test, il problema riguarda più componenti di Windows Azure correlati.

È anche possibile modificare l'impostazione dell'applicazione per eseguire IISExpress (predefinito) o server IIS per vedere che c'è un cambiamento nel comportamento problema. Se si ottiene lo stesso errore con IIS Server e IIS Express, è possibile concentrarsi sui componenti di Windows Azure per risolvere il problema.

+0

Ho dimenticato di dirlo, ho già distribuito alcuni laboratori da msdn e ha funzionato perfettamente. – Florent

5

OK: sono riuscito a riprodurre questo problema e il problema riguarda la configurazione del progetto di distribuzione del cloud.

My version of the error

La ragione per cui ho ottenuto questo errore è perché ho impostato la stringa di connessione di archiviazione per puntare a "UseDevelopmentStorage=true;". Invece è necessario utilizzare lo strumento stringa di connessione nel progetto Azure distribuzione per cambiare dove il ConfigurationManager ottiene la sua stringa di connessione e avere uno per lo sviluppo locale e uno diverso per la distribuzione al Cloud:

  • Aprire l'Azure Progetto di Windows e trova il nodo Ruoli.
  • doppio clic sul vostro progetto WebRole per aprire il pannello di configurazione
  • Clicca sulle Impostazioni scheda per visualizzare tutte le diverse impostazioni definite per il progetto.Probabilmente vedrete qualcosa di simile:

Configuration Panel

  • Avviso casella Service Configuration combinata nella parte superiore. Le mie impostazioni, come visualizzate nell'immagine, indicano attualmente che l'impostazione StorageConnectionString verrà applicata a sia allo che al Cloud e alle distribuzioni locali. Questo è male.
  • Vedi quello sotto di esso? Il secondo? Quello mostra <Select Configuration> nella colonna Valore poiché il valore dipenderà dalla configurazione in esecuzione.

Per risolvere questo problema, si tratta di una questione di cambiare la configurazione del servizio di Cloud e quindi regolando le impostazioni:

  • Modificare l'Service Configuration impostazione per cloud
  • Clicca sulle ellissi alla fine dell'impostazione StorageConnectionString e scegliere Immettere le credenziali di archiviazione.

Configuration Settings

  • Salva questa finestra di dialogo, e la pagina delle impostazioni di configurazione, e tornare nel codice in cui si crea il cliente CloudStorageAccount.
  • nel luogo che è necessario per ottenere la stringa di connessione per creare il client, utilizzare il seguente frammento:

    // Recupera account di archiviazione da collegamento corde CloudStorageAccount storageAccount = CloudStorageAccount.Parse ( CloudConfigurationManager.GetSetting ("StorageConnectionString"));

  • Il storageAccount viene ora caricato dalla stringa di connessione corretta in base alla pubblicazione su Cloud o Local.

Quando la procedura guidata di distribuzione viene eseguito, si tirerà nella cloud impostazioni automaticamente, mantenendo intatte le locali impostazioni per l'esecuzione nel debugger.

Provalo e fammi sapere se non funziona per te. Sarei felice di unirmi a una riunione di Lync per esaminare il tuo codice e correggerlo se sei aperto a questo ...

+0

Ho già definito le credenziali di archiviazione in diverse configurazioni (ho tre configurazioni, una per lo sviluppo locale, una per il test e una per la produzione, test e produzione sono distinti per l'account Windows Azure). Sospettavo che ci fosse un tentativo di connessione a localhost, quindi provo a codificare le credenziali di test direttamente nella mia applicazione, eseguendole in Windows Azure ma ho ancora lo stesso problema. – Florent

+0

Stavo accedendo alle mie impostazioni da RoleEnvironment invece di CloudConfigurationManager in questo modo: 'CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse (RoleEnvironment.GetConfigurationSettingValue (" BlobConnection "));'. Non spero davvero che questo cambierà nulla ma sto già provando il tuo metodo per chiamare l'impostazione. Sto distribuendo il mio progetto su Azure e ti faccio sapere se c'è qualche cambiamento. – Florent

+0

La nuova distribuzione che ho provato ancora non cambia nulla. Ho anche provato a inserire le credenziali di test nella stringa di connessione locale anziché UseDevelopmentStorage = true. Calcola, ma il blob che ho salvato nel contenitore (presumibilmente nel blob del mio account di test) è memorizzato nell'emulatore di archiviazione. Controllo la modalità di debug, la stringa tirata dalle impostazioni del cloud è la mia stringa di connessione test. Quindi, non capisco perché non vi sia alcun errore sollevato, e perché sto salvando il mio BLOB in un altro percorso che voglio. – Florent