web-dev-qa-db-fra.com

CloudConfigurationManager.GetSetting renvoyant la valeur null

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>
20
weston

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);
10
weston

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.

19
Nikolai Joukov

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>
16
dascalos

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.

9
Scott Scowden

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 __. .

4
Ankur D

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. 

4
SocialMitch

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" />
4
Matt Frear

Suite à ce tutoriel:

Vous pouvez obtenir les paramètres de configuration comme ceci:

RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
3
user888734

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!)

1
Alfontz

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.

1

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:

  1. Cliquez avec le bouton droit sur le projet Azure et sélectionnez Propriétés. Mettez à jour Azure SDK conformément à l'onglet Application. (Merci à la réponse de rattrick).
  2. Faites un clic droit pour gérer les paquets NuGet. Sur la gauche, cliquez sur Mises à jour et mettez à jour WindowsAzure.ConfigurationManager.
1
acarlon

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");
    }
}
1
user3104116

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 

  • Microsoft.WindowsAzure.Storage 2.1.0.0
  • Microsoft.WindowsAzure.Configuration 2.0.0.0

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).

0
BerndK

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é.

0
huha