2012-08-14 8 views
7

He intentado algunos laboratorios en Windows Azure y funciona bien. Entonces, comienzo a desarrollar mi aplicación con Azure Emulator.Windows Azure finaliza la conexión y devuelve un código de error 324

puedo realizar mi primera prueba de despliegue hoy en Windows Azure y tener un primer número:

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 

fue la primera implementación, por lo que ha intentado eliminar un contenedor que no existe. Ahora manejo la Excepción.

Despliegue mi proyecto y no aparece ningún error del servidor. Simplemente finaliza la conexión y me deja este error: Error 324 (net::ERR_EMPTY_RESPONSE)

Supongo que echo de menos algo en mi configuración, pero no pude encontrar lo que es exactamente.

¡Gracias por tu ayuda!

Editar: La implementación en sí es la primera para esta aplicación, pero no es la primera que realizo en Windows Azure. Ya implementé algunos laboratorios msdn cuando comencé a desarrollar para Windows Azure.

+0

me di cuenta de la seguimiento de pila que parece que está llamando a Blob storage from global.asax.cs - ¿podría intentar hacer esto desde una acción de controlador y ver si obtiene el mismo error? Además, vi el mensaje "no se puede conectar al servidor remoto". ¿Estás seguro de que el nombre de la cuenta y la clave de la cuenta son precisos y ambos de la misma cuenta de almacenamiento? Lo he echado a perder antes y he recibido errores extraños ... –

+0

Intento mover la llamada de almacenamiento blob en mi 'HomeController', pero no cambia nada. Ya he comprobado mis credenciales. Todos son válidos y están asociados a la misma cuenta. También traté de poner mi cadena de conexión directamente en el método 'global.asax' en lugar de llamar a una clave del' administrador de configuración' pero no funciona. Algo que no puedo entender es por qué la aplicación intenta conectarse a '127.0.0.1: 10000' mientras estoy usando Windows Azure – Florent

Respuesta

3

Bien, descubrí cuál fue mi error.

En mi deseo de abstracción, diseñé una solución donde utilicé la conexión blob solo en muy pocas ocasiones en mi aplicación. Hubo 3 llamadas al almacenamiento blob.

  • Uno en mi Global.asax
  • Uno en un BlobService
  • Uno en un ExtensionMethod

yo nos registramos varias veces mi Global.asax y BlobService pero se olvidó la ExtensionMethod. Lo escribí en el comienzo de mi proyecto y yo era el acceso a mi cuenta de burbuja sólo en el desarrollo mediante la siguiente instrucción: CloudStorageAccount.DevelopmentStorageAccount en lugar de CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlobConnection"))

Chris Koening answer era parcialmente correcto, porque yo estaba tratando de acceder al almacenamiento de desarrollo, mientras que yo estaba en las nubes. Si tiene el mismo problema describe en esta pregunta, mi consejo sería:

  1. Ejecutar Chris respuesta
  2. Si no resuelve su problema, tratar de encontrar la cadena DevelopmentStorageAccount en toda su solución a través de Visual Studio herramienta de búsqueda o Agent Ransack y reemplazarla con la clave que definen en primer paso
  3. Si aún así no se soluciona el problema, tratar de encontrar si hay alguna referencia a la DevelopmentStorage en otro sitio
+1

Recibí el mismo error cuando trato de ejecutar en localhost usando Azure Storage Emulator. Sucede en la llamada "container.CreateIfNotExists()". Después de mucha lucha, resulta que, en mi caso, el emulador no se inició. Haga clic con el botón derecho en el icono de la barra de tareas de Azure y haga clic en Iniciar emulador de almacenamiento. Una vez que comenzó, funciona bien. – newman

0

Su problema es específico del componente instalado en su equipo, en lugar de Windows Azure Specific. Puedo proporcionar algunos consejos para solucionar este problema, sin embargo, sería muy difícil determinar una causa raíz específica.

Lo que puede hacer es crear una aplicación Web Role muy sencilla directamente desde la plantilla y luego ejecutarla en Windows Azure Emulator para ver si funciona bien o no. De esta manera puede distinguir si su problema es específico de su código o no. Si acierta exactamente el mismo problema con una aplicación de prueba simple, entonces su problema está relacionado con más componentes de Windows Azure.

También puede modificar la configuración de su aplicación para que se ejecute en IISExpress (predeterminado) o en el servidor IIS para ver si hay un cambio en el comportamiento del problema. Si obtiene exactamente el mismo error con IIS Server y IIS Express, entonces puede enfocarse en sus componentes de Windows Azure para solucionar el problema.

+0

Olvidé mencionarlo, ya implementé un laboratorio de msdn y funcionó perfectamente bien. – Florent

5

OK - Pude reproducir esto, y el problema es con la configuración de su proyecto de implementación en la nube.

My version of the error

La razón por la que tengo este error se debe a que me puse la cadena de conexión de almacenamiento para que apunte a "UseDevelopmentStorage=true;". En su lugar tiene que utilizar la herramienta de cadena de conexión en el Proyecto de Implementación de Azure a cambiar el lugar en el ConfigurationManager obtiene su cadena de conexión y tener uno para el desarrollo local y otro diferente para el despliegue de la nube:

  • Abra su proyecto de Windows Azure y encuentre el nodo Roles.
  • doble clic en su proyecto WebRole para abrir el panel de configuración
  • Haga clic en los Ajustes pestaña para mostrar todos los diferentes parámetros definidos para su proyecto.Es probable que vea algo como esto:

Configuration Panel

  • Aviso Service Configuration la caja combo en la parte superior. Mi configuración, tal como se muestra en la imagen, actualmente indica que la configuración StorageConnectionString se aplicará a ambos la nube y las implementaciones locales. Eso es malo.
  • ¿Ves el que está debajo? ¿El segundo? Ese muestra <Select Configuration> en la columna Valor ya que el valor dependerá de la configuración que esté ejecutando.

Para solucionar este problema, es una cuestión de cambiar la configuración del servicio a Cloud y luego ajustar la configuración:

  • Cambiar el Service Configuration ajuste para Nube
  • Haga clic en las elipses al final de la configuración StorageConnectionString y elija Ingrese las credenciales de almacenamiento.

Configuration Settings

  • Guardar este cuadro de diálogo, y la página de ajustes de configuración y volver a entrar en el código donde se crea el cliente CloudStorageAccount.
  • En el lugar que usted necesita para obtener la cadena de conexión para crear el cliente, utilice el siguiente fragmento:

    // Recuperar cuenta de almacenamiento de conexión en cadena de CloudStorageAccount storageAccount = CloudStorageAccount.Parse ( CloudConfigurationManager.GetSetting ("StorageConnectionString"));

  • El storageAccount ahora se carga desde la cadena de conexión correcta en función de si publica en Cloud o Local.

Cuando se ejecuta el asistente de implantación, que se tire en el Nube configuración automática, preservando al mismo tiempo los ajustes locales para la ejecución en el depurador.

Pruébelo y avíseme si no funciona para usted. Estaría encantado de unirme a una reunión de Lync para revisar tu código y arreglar esto si estás abierto a eso ...

+0

Ya definí mis credenciales de almacenamiento en diferentes configuraciones (tengo tres configuraciones, una para el desarrollo local, otra para las pruebas y otra para la producción. Las pruebas y la producción se realizan en distintas cuentas de Windows Azure). Sospeché que había un intento de conectarme a localhost, así que trato de codificar mi credencial de prueba directamente en mi aplicación y ejecutarla en Windows Azure, pero todavía tengo el mismo problema. – Florent

+0

Estaba accediendo a mi configuración por RoleEnvironment en lugar de CloudConfigurationManager como lo siguiente: 'CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse (RoleEnvironment.GetConfigurationSettingValue (" BlobConnection "))'. Realmente no espero que esto cambie nada, pero ya estoy intentando su método para llamar a la configuración. Implementaré mi proyecto en Azure y le informaré si hay algún cambio. – Florent

+0

La nueva implementación que probé todavía no cambia nada. También traté de poner mis credenciales de prueba en mi cadena de conexión local en lugar de UseDevelopmentStorage = true. Se calcula, pero el blob que guardé en el contenedor (se supone que está en mi blob de cuenta de prueba) se almacena en el emulador de almacenamiento. Compruebo el modo de depuración, la cadena extraída de la configuración de la nube es mi cadena de conexión de prueba. Por lo tanto, no entiendo por qué no se ha producido ningún error, y por qué estoy guardando mi blob en otra ubicación que quiero. – Florent

Cuestiones relacionadas