Suivre les instructions ici j'ai:
var connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");
Mais connectionString
est null
, voici mon 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>
Eh bien cela fonctionne, même si le commentaire ne correspond pas, car j'ai une référence à CloudConfigManager:
Si vous créez une application sans référence à Microsoft.WindowsAzure.CloudConfigurationManager et que votre chaîne de connexion se trouve dans le fichier web.config ou app.config comme indiqué ci-dessus, vous pouvez utiliser ConfigurationManager pour extraire la chaîne de connexion. Vous devrez ajouter une référence à System.Configuration.dll à votre projet et ajouter une autre déclaration d'espace de noms pour celui-ci:
using System.Configuration;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
Voir documentation dans MSDN http://msdn.Microsoft.com/en-us/library/windowsazure/Microsoft.windowsazure.cloudconfigurationmanager.aspx
Seuls les paramètres de configuration de la balise appSettings peuvent être lus par CloudConfigurationManager. Si vos paramètres de configuration se trouvent dans une balise différente, l'appel de GetSetting retournera la valeur Null.
Avait le même problème. Au lieu d'utiliser une chaîne de connexion, utilisez la configuration-> appSettings-> add key comme ceci ...
<configuration>
<appSettings>
<add key="StorageConnectionString" value="[ConnectionStringHere]" />
</appSettings>
</configuration>
J'ai eu le même problème. J'avais mis à jour le projet pour utiliser Azure SDK 2.0. J'ai mis à jour les packages NuGet pour mes rôles Web et de travail, mais le projet Azure dans Visual Studio était toujours sur l'ancienne version.
Pour résoudre ce problème, cliquez avec le bouton droit de la souris sur votre projet Azure et sélectionnez Propriétés. Sous l'onglet Application, vous verrez un bouton pour mettre à jour votre SDK Azure.
Sur la base de ma compréhension, je voudrais souligner que CloudConfigurationManager.GetSetting examinera le fichier web.config si vous manquez d'un service de cloud. Si vous êtes dans un service cloud, il examinera cscfg.
S'il vous plaît se référer ce lien __. .
Assurez-vous que toutes vos références sont synchronisées. Il y a la bibliothèque 2012-06 et 2012-10 Définissez-les sur Copier Local = true et vérifiez la version du SDK. Je traitais exactement la même chose, me rendait dingue.
Cela m'est arrivé lorsque j'ai mis à niveau le SDK Azure vers la version 2.2.
Pour résoudre ce problème, j'ai modifié le fichier packages.config afin d'utiliser une version plus récente d'Azure ConfigurationManager.
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />
Suite à ce tutoriel:
Vous pouvez obtenir les paramètres de configuration comme ceci:
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
J'ai le même problème après avoir revisité ma solution Azure (rôle Web + Worker) pour la mettre à jour pour Azure 2.5
. En examinant l'aide pour CloudConfigurationManager.GetSetting
, si elle s'exécute sous une plateforme cloud (Azure), elle lit le ServiceConfiguration.csfg
, si elle est exécutée en tant qu'application Web .net
, lit à partir de l'application ou web.config
.
Ma solution consistait donc simplement à remplacer le projet de démarrage par le projet de cloud Azure, et non par le projet Web.
Je devenais nul car il était hébergé sur la mauvaise plate-forme et lisait à partir des fichiers .config
sans paramètres . (Doh!)
J'ai eu le même problème (deux fois). Même après avoir redémarré Visual Studio et l'émulateur Azure, CloudConfigurationManager.GetSetting ("SettingName") renvoie la valeur null.
J'étais sûr que cela fonctionnait avant et j'avais le dernier SDK.
La solution redémarrait donc mon PC et après cela, CloudConfigurationManager.GetSetting ("SettingName") renvoie la bonne valeur.
Je l’ai obtenu après la mise à niveau de Azure SDK de la version 2.0 à la version 2.2. J'ai pu réparer par:
C'est un ancien thread, mais je souhaitais partager ma solution si le problème n'est pas résolu par les méthodes susmentionnées, puis assurez-vous qu'Azure Storage Emulator est en cours d'exécution lorsque vous exécutez l'application. au moins pour moi c'est arrivé. Pour moi, je devais créer une classe pour traiter le problème de l'émulateur, comme mentionné ici ...
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");
}
}
J'ai eu des problèmes assez similaires. J'ai mis à jour Azure SDK 2.0 à la version 2.2 - au cours de ce processus, j'ai utilisé le gestionnaire NuGet pour mettre à jour Microsoft.WindowsAzure.Storage. Le PackageManager a automatiquement amené Microsoft.WindowsAzure.Configuration à 1.8.0.0. Je n'ai pas réussi à le faire fonctionner (c'était pour .Net 2.0 !?). Après avoir défini manuellement toutes les références sur
tout a fonctionné.
Je pense que cela est dû à la manière dont CloudConfigurationManager.GetSetting charge l’Assembly et appelle les fonctions (via réflexion).
Idem ici après la mise à niveau de Azure SDK de 2.2 à 2.3.:
Cliquez avec le bouton droit sur le projet Azure, sélectionnez Propriétés. Dans l'onglet Application, cliquez sur "Mettre à niveau ..." (Merci à la réponse de rattrick).
Il restait ensuite une erreur à résoudre: .ConfigurationErrorsException 'est survenu dans Microsoft.WindowsAzure.ServiceRuntime.dll Informations supplémentaires: konnte nicht erstellt werden.
Dans la fenêtre "Liste des erreurs" de VS2013, l'avertissement suivant apparaît:
Conflits constatés entre différentes versions du même assemblage dépendant. Dans Visual Studio, double-cliquez sur cet avertissement (ou sélectionnez-le et appuyez sur Entrée) pour résoudre les conflits. sinon, ajoutez les redirections de liaison suivantes au nœud "runtime" dans le fichier de configuration de l'application: C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets 1635
J'ai laissé VS résoudre cet avertissement et tout a bien fonctionné.