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>
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.
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>
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);
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.
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.
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" />
suite à ce tutoriel:
vous pouvez obtenir des paramètres de configuration comme ceci:
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
Je l'ai obtenu après avoir mis à jour Azure SDK de 2.0 à 2.2. J'ai pu réparer par:
- 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).
- clic droit pour gérer les paquets NuGet. Sur le clic gauche mises à jour et mise à jour WindowsAzure.ConfigurationManager.
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.
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!)
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");
}
}
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).
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é.
ça a marché pour moi...
using System.Configuration;
...
var connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
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.
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);