c# - management - almacenamiento de blobs azules "No se encontró una combinación válida de información de cuenta"
microsoft management azure (11)
Almacene su cadena de conexión de almacenamiento en AppSettings, no en la sección ConnectionStrings. Y, pegar aquí la cadena de conexión real nos ayudará a ayudarlo (puede poner * para la clave de la cuenta).
Tengo un proyecto MVC4 que estoy ejecutando usando la vista previa de los sitios web de Azure.
Mi problema es que no puedo cargar un blob en mi contenedor de almacenamiento de blob cuando he implementado mi sitio web en Azure, sin embargo, la carga funciona bien cuando estoy depurando localmente.
Esta es la excepción y el seguimiento de la pila que obtengo cuando se implementa e intento cargar en un contenedor:
No se encontró una combinación válida de información de cuenta. en Microsoft.WindowsAzure.Storage.CloudStorageAccount.b__0 (String err) en Microsoft.WindowsAzure.Storage. en MyProj.Controllers.ImageController.Upload (modelo ImageViewModel)
Específicamente según el seguimiento de la pila, es el método .Parse el que está fallando.
El código que estoy usando para conectarme al almacenamiento de blobs proviene directamente de la documentación de instrucciones de Azure:
string connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
Una vez más, esto funciona bien cuando ejecuto localmente en mi caja de desarrollo, puedo cargarlo correctamente sin problemas. Sin embargo, me da este error cuando se implementa e intento hacer exactamente lo mismo.
¿Supongo que mi storageConnectionString se está desordenando durante el proceso de publicación de implementación web, pero no estoy seguro de cómo resolverlo?
Creo que esa no podría ser la causa del problema como lo expresó Sandino Di Mattia. Tuve el mismo cuando actualicé el SDK a 2.0 y resultó que el analizador de cadenas de conexión de la API no admite más espacios en blanco en la cadena de conexión y no se mencionó en ninguna parte. Si este tipo de cambio fuera intencional, lo llamaría un movimiento desagradable ...
Estaba enfrentando el mismo problema. Debe usar Microsoft.WindowsAzure.Storage
espacio de nombres Microsoft.WindowsAzure.Storage
y asegurarse de que no haya un espacio adicional en la cadena de conexión.
Estar seguro de que
1) Está utilizando el protocolo adecuado para los diagnósticos (haga doble clic en la función -> pestaña de configuración -> seleccione la configuración -> debajo de "Diagnósticos", haga clic en los puntos suspensivos -> intente hacer clic en Aceptar ... usar https, cambiar las cadenas de conexión a https)
y
2) No se permiten espacios en blanco ... es decir, UseDevelopmentStorage=true;DevelopmentStorageProxyUri=https://127.0.0.1
lugar de UseDevelopmentStorage=true; DevelopmentStorageProxyUri=https://127.0.0.1
UseDevelopmentStorage=true; DevelopmentStorageProxyUri=https://127.0.0.1
(nota espacio después del punto y coma)
Verifique https y espacios en blanco en todas las cadenas de conexión en la pestaña Configuración
---EDITAR----
Poner "https" en realidad lo estropeó todo para nosotros. El rol de trabajador generaría una excepción ("Falló la transferencia debido a un formato de paquete inesperado") y luego alternaría entre lo desconocido y lo destruido. Se eliminó la "s" en "https" y se aseguró de que no hubiera espacios en blanco y listo.
No olvide incluir "https: //" o "https: //" cuando use el proxyUri. Me gusta:
UseDevelopmentStorage=true;DevelopmentStorageProxyUri=https://127.0.0.1
Obtuve esto porque accidentalmente había agregado un carácter de nueva línea (/ r / n) al final de la cadena.
Otra forma de obtener la instancia de CloadStorageAccount es haciendo esto
StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
Esto debería ayudar a cualquiera que tenga este problema de análisis.
Recibí este error porque usé el paquete nuget incorrecto, (estoy usando dot net 4.6.1)
El paquete incorrecto fue: WindowsAzureStorage.Helper
El paquete correcto es: WindowsAzure.Storage
y asegúrese de usar el espacio de nombres: using Microsoft.WindowsAzure.Storage;
Si está seguro de que la cadena de conexión copiada del servicio de Azure es la misma que la que ha pegado, compruebe si ha proporcionado algún espacio / retorno de carro por motivos de legibilidad, también es una de las razones que causaron ese problema. experimentado. Traté de dar +1 para @scottndecker pero no pude ya que no tengo 15 reputación.
También tuve el mismo problema, y lo encontré en el espacio de nombres. La clase CloudStorageAccount está presente en ambos espacios de nombres
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
Así que simplemente WindowsAzure
espacio de nombres de WindowsAzure
y agregué WindowsAzure.Storage
en mi código.
Código anterior:
using Microsoft.WindowsAzure;
Código fijo:
using Microsoft.WindowsAzure.Storage;
Tenga en cuenta, también, que la carcasa en la cadena de conexión es importante. Experimenté este error antes cuando una fusión grande causó que alguien "Nombre de cuenta" a "Nombre de cuenta" en mi Web.config. Usando la carcasa correcta reparó el error.