started - storage azure c#
CloudConfigurationManager.GetSetting devuelve nulo (17)
Siguiendo las instrucciones aquí , tengo:
var connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");
Pero connectionString
es null
, aquí está mi app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="StorageConnectionString"
connectionString="DefaultEndpointsProtocol=https;AccountName=storage;AccountKey=key" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Asegúrese de que todas sus referencias estén sincronizadas. Está la biblioteca 2012-06 y 2012-10 Configúrelos para copiar Local = true y verifique la versión del SDK. He tratado exactamente lo mismo, me volví loco.
Bueno, esto funciona, incluso si el comentario no encaja, porque tengo una referencia a CloudConfigManager:
Si está creando una aplicación sin referencia a Microsoft.WindowsAzure.CloudConfigurationManager, y su cadena de conexión se encuentra en web.config o app.config como se muestra arriba, entonces puede usar ConfigurationManager para recuperar la cadena de conexión. Deberá agregar una referencia a System.Configuration.dll a su proyecto y agregarle otra declaración de espacio de nombres:
using System.Configuration;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
En mi opinión, me gustaría señalar que CloudConfigurationManager.GetSetting buscará en web.config si se está quedando sin un servicio en la nube. Examinará cscfg si está dentro de un servicio en la nube.
Por favor, consulte este enlace.
Es un hilo viejo, pero quería compartir mi solución si el problema no se resuelve con los métodos mencionados anteriormente, y luego asegúrese de que Azure Storage Emulator se esté ejecutando cuando ejecuta la aplicación; al menos para mí esto sucedió. Para mí tuve que crear una clase para manejar el problema del emulador como se menciona aquí ...
http://blog.simontimms.com/2013/08/28/configuration-settings-in-an-azure-worker-role/
class ConfigurationProvider
{
private static string GetStorageConnectionString(string name)
{
try
{
return RoleEnvironment.GetConfigurationSettingValue(name);
}
catch (SEHException)
{
return System.Configuration.ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
}
public static string StorageConnectionString()
{
return GetStorageConnectionString("StorageConnectionString");
}
public static string DefaultConnection()
{
return GetStorageConnectionString("DefaultConnection");
}
}
Estaba obteniendo un valor nulo al pasar una cadena literal también después de instalar Azure SDK 2.6 (estaba funcionando antes).
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);
Reemplazó la cadena literal y funcionó bien.
string connectionStr = "AzureStorage";
var connectionstring = ConfigurationManager.ConnectionStrings[connectionStr].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
Esto funcionó para mí ...
using System.Configuration;
...
var connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
Esto me sucedió cuando actualicé Azure SDK a la versión 2.2.
Para solucionarlo, cambié el paquete.config para usar una versión más nueva del Azure ConfigurationManager.
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />
Lo mismo aquí después de actualizar Azure SDK de 2.2 a 2.3 .:
Haga clic con el botón derecho en el proyecto de Azure y seleccione Propiedades. En la pestaña Aplicación, haga clic en "Actualizar ..." (Gracias a la respuesta de rattrick).
Luego, hubo un error más que resolver: al intentar ejecutar Azure Project en el Emulador de Compute lanzó una excepción: System.Configuration.ConfigurationErrorsException no se manejó Mensaje: Se produjo una excepción no controlada del tipo ''System.Configuration.ConfigurationErrorsException'' en Microsoft.WindowsAzure. ServiceRuntime.dll Información adicional: konnte nicht erstellt werden.
En la ventana "Lista de errores" de VS2013, había la siguiente Advertencia:
Conflictos encontrados entre diferentes versiones del mismo ensamblaje dependiente. En Visual Studio, haga doble clic en esta advertencia (o selecciónela y presione Entrar) para solucionar los conflictos; de lo contrario, agregue los siguientes redireccionamientos de enlace al nodo "runtime" en el archivo de configuración de la aplicación: C: / Archivos de programa (x86) / MSBuild / 12.0 / bin / Microsoft.Common.CurrentVersion.targets 1635
Dejé que VS resolviera esta advertencia y todo funcionó bien.
Lo obtuve después de actualizar Azure SDK de 2.0 a 2.2. Pude arreglarlo por:
- Hacer clic derecho en el proyecto de Azure y seleccionar Propiedades. Actualice Azure SDK según la pestaña Aplicación. (Gracias a la respuesta de rattrick).
- Haga clic derecho para administrar paquetes NuGet. A la izquierda, haga clic en Actualizaciones y actualice WindowsAzure.ConfigurationManager.
Según la documentación en MSDN http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.cloudconfigurationmanager.aspx
Solo las configuraciones de configuración dentro de la etiqueta appSettings pueden ser leídas por CloudConfigurationManager. Si su configuración está dentro de una etiqueta diferente, al llamar a GetSetting se devolverá nulo.
Siguiendo este tutorial:
Puede obtener configuraciones como esta:
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
Tenía el mismo problema. En lugar de usar una cadena de conexión, use la configuración-> appSettings-> agregar clave como esta ...
<configuration>
<appSettings>
<add key="StorageConnectionString" value="[ConnectionStringHere]" />
</appSettings>
</configuration>
Tengo el mismo problema después de volver a visitar mi solución Azure (función Web + Worker) para actualizarla para Azure 2.5
. Revisando la ayuda para CloudConfigurationManager.GetSetting
, si se ejecuta bajo una plataforma en la nube (Azure) se lee desde ServiceConfiguration.csfg
, si se está ejecutando como una aplicación web .net
, se lee desde la aplicación o web.config
.
Así que mi solución fue simplemente cambiar el proyecto de inicio al proyecto Azure Cloud, no al proyecto web.
Estaba obteniendo nulo porque estaba alojado en la plataforma incorrecta y leyendo desde los archivos .config
sin configuración. (Doh!)
Tuve el mismo problema (dos veces). Incluso después de reiniciar Visual Studio y después de reiniciar el emulador de Azure, CloudConfigurationManager.GetSetting ("SettingName") devuelve null.
Estaba seguro de que había funcionado antes y tenía el último SDK.
Entonces, las soluciones fueron reiniciar mi PC y luego CloudConfigurationManager.GetSetting ("SettingName") devuelve el valor correcto.
Tuve problemas bastante similares. Actualicé desde Azure SDK 2.0 a 2.2, durante este proceso utilicé NuGet Manager para actualizar Microsoft.WindowsAzure.Storage a la última versión. El PackageManager automáticamente tomó Microsoft.WindowsAzure.Configuration a 1.8.0.0. No pude ejecutar esto (¡fue para .Net 2.0 !?). Después de configurar manualmente todas las referencias a
- Microsoft.WindowsAzure.Storage 2.1.0.0
- Microsoft.WindowsAzure.Configuration 2.0.0.0
todo funcionó.
Creo que esto se debe a la forma en que CloudConfigurationManager.GetSetting carga el ensamblado y llama a los funktions (a través de la reflexión).
Yo tuve el mismo problema. Actualicé el proyecto para usar Azure SDK 2.0. Actualicé los paquetes de NuGet para mis roles de web y de trabajador, pero el proyecto de Azure en Visual Studio todavía estaba en la versión anterior.
Para solucionar esto, haga clic con el botón derecho en su proyecto de Azure y seleccione Propiedades. En la pestaña Aplicación, verá un botón para Actualizar su SDK de Azure.
Yo tuve el mismo problema. Ninguno de los consejos funcionó para mí, pero el "problema" fue directo. Un simple tiene que entender cómo funciona esta clase.
No entra en su app.config
/ web.config
o donde almacena la configuración de su aplicación. CloudConfigurationManager
funciona con ServiceConfiguration.*.cscfg
y ServiceConfiguration.csdef
. El .csdef debe contener una definición de la configuración, pero no su valor en la sección ConfigurationSettings
. La configuración misma está en archivos .cscfg (en la misma sección, pero incluye el valor; supongo que el motivo de la doble definición es asegurarse de que tanto la configuración en la nube como la local tengan la misma configuración).
Puede configurarlos haciendo clic con el botón derecho en su función en Visual Studio y seleccionando Propiedades -> Configuración (en el caso de StorageConnectionString, simplemente seleccione "Su suscripción", si su cuenta de almacenamiento está conectada al servicio en la nube) o edítelos manualmente . Si arruinas la configuración, obtendrás un ícono de exclamación.
Simple como eso.