CloudConfigurationManager.GetSetting returning null

instructions suivantes ici j'ai:

var connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");

mais connectionString est null , voici mon application.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>
20
demandé sur abatishchev 2013-03-13 15:36:09

17 réponses

selon la documentation en MSDN http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.cloudconfigurationmanager.aspx

seuls les paramètres de configuration dans la balise appSettings peuvent être lus par CloudConfigurationManager. Si vos paramètres de configuration sont dans une balise différente, appeler GetSetting retournera Null.

19
répondu Nikolai Joukov 2013-08-22 15:03:26

Avait le même problème. Au lieu d'utiliser une chaîne de connexion, utilisez la touche configuration->appSettings->add comme ceci...

<configuration>
    <appSettings>
        <add key="StorageConnectionString" value="[ConnectionStringHere]" />
    </appSettings>
</configuration>
16
répondu dascalos 2014-01-05 19:55:43

Eh bien cela fonctionne, même si le commentaire ne convient pas, parce que j'ai une réf à CloudConfigManager:

si vous créez une application sans référence à Microsoft.WindowsAzure.CloudConfigurationManager, et votre chaîne de connexion est située sur le web.config ou app.comme indiqué ci-dessus, vous pouvez utiliser ConfigurationManager pour récupérer la chaîne de connexion. Vous devrez ajouter une référence au système.Configuration.dll à votre projet et ajouter une autre déclaration namespace pour elle:

using System.Configuration;

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
10
répondu weston 2013-03-14 09:58:57

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 paquets NuGet pour mes rôles Web et worker, mais le projet Azure dans Visual Studio était toujours sur l'ancienne version.

pour corriger cela, faites un clic droit sur votre projet Azure et sélectionnez Propriétés. Sous L'onglet Application, vous verrez un bouton pour mettre à jour votre SDK Azure.

9
répondu Scott Scowden 2013-05-21 01:46:21

assurez-vous que toutes vos références sont synchronisées. Il y a la bibliothèque 2012-06 et 2012-10 les mettre à copier Local = true et vérifier la version SDK. J'ai traité avec exactement la même chose, m'ont rendu fou.

4
répondu SocialMitch 2013-03-13 12:09:30

cela m'est arrivé quand J'ai mis à jour le SDK Azure en version 2.2.

pour le corriger, j'ai changé les colis.config pour utiliser une nouvelle version de L'Azure ConfigurationManager.

<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />
4
répondu Matt Frear 2013-11-07 16:34:42

D'après ce que j'ai compris, j'aimerais souligner que CloudConfigurationManager.GetSetting regardera sur le web.config si vous êtes à court d'un service cloud. Il se penchera sur cscfg si vous êtes dans un service cloud.

s'il vous Plaît se référer à ce lien.

4
répondu Ankur D 2015-05-05 09:59:41

suite à ce tutoriel:

vous pouvez obtenir des paramètres de configuration comme ceci:

RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
3
répondu user888734 2014-02-06 16:42:47

Je l'ai obtenu après avoir mis à jour Azure SDK de 2.0 à 2.2. J'ai pu réparer par:

  1. Droit-en Cliquant sur Azure projet et en sélectionnant Propriétés. Mettre à jour Azure SDK selon l'onglet Application. (Merci à la réponse de rattrick).
  2. clic droit pour gérer les paquets NuGet. Sur le clic gauche mises à jour et mise à jour WindowsAzure.ConfigurationManager.
1
répondu acarlon 2013-12-22 09:16:29

j'ai eu le même problème (deux fois). Même après avoir redémarré Visual Studio et redémarré L'émulateur Azure, le Gestionnaire de configuration Cloudcon.Getsetting ("SettingName") retourne null.

j'étais sûr que ça avait fonctionné avant et j'avais le dernier SDK.

donc les solutions redémarraient mon PC et après ce CloudConfigurationManager.GetSetting ("SettingName") renvoie la bonne valeur.

1
répondu Peter van Logchem 2014-04-09 09:22:11

j'ai eu le MÊME PROBLÈME Ce matin après avoir revu ma solution Azure (Web + rôle de travailleur) pour la mettre à jour pour Azure 2.5 . En examinant l'aide pour CloudConfigurationManager.GetSetting , si son fonctionnement sous une plate-forme de nuage (Azure) il lit de la ServiceConfiguration.csfg , si fonctionnant comme une .net application web, lit de l'application ou web.config .

donc ma solution était simplement de changer le projet start-up de nouveau au projet cloud Azure, pas au projet Web.

Je commençais à null parce qu'il a été hébergé dans la mauvaise plate-forme et la lecture des fichiers .config sans paramètres. (Doh!)

1
répondu Alfontz 2014-12-03 16:56:01

c'est un vieux fil, mais je voulais partager ma solution si le problème n'est pas résolu par les méthodes mentionnées ci-dessus, puis assurez-vous que L'émulateur de stockage Azure est en cours d'exécution lorsque vous exécutez l'application; au moins pour moi, cela s'est produit. Pour moi, j'ai dû créer une classe pour gérer la question 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");
    }
}
1
répondu user3104116 2015-06-11 09:44:00

j'ai eu des problèmes similaires. J'ai mis à jour de Azure SDK 2.0 à 2.2 - au cours de ce processus, J'ai utilisé le Gestionnaire NuGet pour mettre à jour le Microsoft.WindowsAzure.De stockage à la dernière. Le PackageManager a automatiquement pris Microsoft.WindowsAzure.Configuration à 1.8.0.0. Je n'ai pas réussi à obtenir ce fonctionnement (c'était pour .Net 2.0!?). Après avoir réglé manuellement toutes les références à

  • Microsoft.WindowsAzure.Stockage 2.1.0.0
  • Microsoft.WindowsAzure.Configuration 2.0.0.0

tout a fonctionné.

je pense que c'est à cause de la façon dont CloudConfigurationManager.GetSetting charge l'assemblage et appelle les funktions (via réflexion).

0
répondu BerndK 2013-11-10 20:22:34

Idem après la mise à niveau D'Azure SDK de 2.2 à 2.3.:

faites un clic droit sur le projet Azure pour sélectionner les propriétés. Dans l'onglet Applications, cliquez sur "Mise à niveau..."(Merci à la réponse de rattrick).

alors il y avait une erreur de plus à résoudre: Essayer D'exécuter le projet Azure dans L'émulateur de calcul a fait une exception: Système.Configuration.ConfigurationErrorsException n'a pas été manipulée Message: Une exception non manipulée de type 'Système.Configuration.ConfigurationErrorsException " s'est produit dans Microsoft.WindowsAzure.ServiceRuntime.DLL Informations complémentaires: konnte nicht erstellt werden.

dans la fenêtre" Liste d'erreurs "de VS2013 il y avait L'avertissement suivant:

a trouvé des conflits entre différentes versions du même assemblage dépendant. Dans Visual Studio, Double-cliquez cet avertissement (ou sélectionnez-le et appuyez sur Entrée) pour corriger les conflits; sinon, ajoutez la liaison suivante redirige vers le noeud "runtime" dans le fichier de configuration de l'application: C:\Program fichiers (x86)\MSBuild\12.0\bin\Microsoft.Commun.CurrentVersion.cibles 1635

J'ai laissé VS résoudre cet avertissement et tout a bien fonctionné.

0
répondu huha 2014-04-07 10:48:37

ça a marché pour moi...

using System.Configuration;

...

var connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
-1
répondu spadelives 2013-11-04 04:23:52

j'ai eu le même problème. Aucun des conseils n'a fonctionné pour moi, mais la "question" était simple. Un simple a comprendre comment cette classe fonctionne.

il ne va pas dans votre app.config / web.config ou où que vous stockez vos paramètres d'application. CloudConfigurationManager fonctionne avec ServiceConfiguration.*.cscfg et ServiceConfiguration.csdef . Le. csdef doit contenir une définition du paramètre, mais pas sa valeur dans la section ConfigurationSettings . Les paramètres eux-mêmes s'asseoir .fichiers cscfg (dans la même section, mais en incluant la valeur; je suppose que la raison de la double définition est de s'assurer que les configurations cloud et local ont les mêmes paramètres).

vous pouvez les définir soit en cliquant avec le bouton droit de la souris sur votre rôle dans Visual Studio et en sélectionnant Propriétés- > Paramètres (dans le cas de StorageConnectionString, sélectionnez simplement" votre abonnement", si votre compte de stockage est connecté au service cloud), soit en les éditant manuellement. Si vous gâcher la paramètres, vous obtiendrez une icône de point d'exclamation.

C'est aussi Simple que ça.

-1
répondu Vadim Berman 2014-09-23 10:13:53

obtenait une valeur nulle aussi bien en passant une chaîne littérale qu'après avoir installé Azure SDK 2.6 (fonctionnait avant).

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);

a remplacé la chaîne littérale et ça a bien fonctionné.

   string connectionStr = "AzureStorage";

   var connectionstring = ConfigurationManager.ConnectionStrings[connectionStr].ConnectionString;

   CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
-2
répondu KevinThor 2015-06-29 16:22:12