2017-01-05 4 views
2

Ich teste eine azure Funktion lokal mit mehreren API Schlüsseln. Was ist der beste Ort zum Speichern von Umgebungsvariablen und wie kann ich darauf zugreifen? Ich versuchteDer beste Platz zum Speichern von Umgebungsvariablen

System.Environment.GetEnvironmentVariable("name")} 

aber ich bin nicht sicher, wo die Umgebungsvariable gespeichert wird.

Danke!

Antwort

2

Sie sollten eine Datei namens local.settings.json haben. Hier ist die azur Website für Functions-Run-Local

Darin heißt es

Diese Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Verwenden Sie in C# System.Environment.GetEnvironmentVariable oder ConfigurationManager.AppSettings. Verwenden Sie in JavaScript process.env. Einstellungen, die als Systemumgebungsvariable angegeben werden, haben Vorrang vor Werten in der Datei local.settings.json.

Beispiel local.settings.json

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
    }, 
    "Host": { 
    "LocalHttpPort": 7071, 
    "CORS": "*" 
    }, 
    "ConnectionStrings": { 
    "SQLConnectionString": "Value" 
    } 
} 

Er sagt, dass Sie die Anwendungseinstellungen unter der Wert Eigenschaft innerhalb der local.settings.json setzen müssen.

Zum Abrufen habe ich ConfigurationManager.AppSettings["CustomSetting"] verwendet, da Sie Verbindungszeichenfolgen abrufen können.

Ich habe gerade damit herum gespielt und festgestellt, dass Sie einen String-String und einen String-Wert haben müssen. Ich habe einen Fehler erhalten, als ich versucht habe, einen Unterabschnitt zu haben (wie in einem appsettings.json). Ich musste die local.settings.json wie folgt aussehen lassen:

{ 
    "IsEncrypted": false, 
    "Values": { 
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
    "CustomSetting":"20" 
    } 
} 
+0

Wie kann Sie tun Umweltumwandlungen damit? d.h., meine dev-env-Werte unterscheiden sich von prod. –

+0

Sie können dies steuern, indem Sie die Funktionen App in Azure aktualisieren :) – chris31389

+0

Vielen Dank! Habe das gerade letzte Nacht gefunden. –

2

Zum Speichern von API-Schlüsseln können Sie Anwendungseinstellungen verwenden. Details: https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings#application-settings

Um eine Umgebungsvariable oder eine App Einstellungswert zu erhalten, verwenden System.Environment.GetEnvironmentVariable, wie im folgenden Codebeispiel gezeigt:

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 
    log.Info(GetEnvironmentVariable("AzureWebJobsStorage")); 
    log.Info(GetEnvironmentVariable("WEBSITE_SITE_NAME")); 
} 

public static string GetEnvironmentVariable(string name) 
{ 
    return name + ": " + 
     System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); 
} 

Details: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#environment-variables

Dank , Alexey

+0

Nice article. Es ist schwierig, auf den azurblauen Seiten zu navigieren, um solche zu finden. Ich versuche tatsächlich, dies lokal zu testen, ohne Einstellungen in Azure gespeichert zu haben, die ich aus dem Obigen erfasste, dass Schlüssel/Wert-Paare in appSettings.json unter der values ​​-Eigenschaft gehören. – DarthVadar123451

+0

Können Sie ein Beispiel dafür geben, wie eine local.settings.json nach AzureWebJobsStorage und WEBSITE_SITE_NAME sucht? – chris31389

+0

Sieht so aus, als könnten Sie env-Variablen in Azure verwenden und sie lokal in Visual Studio für lokale Laufzeit festlegen: https://msdn.microsoft.com/en-us/library/669zx6zc.aspx#Setting-Umgebungsvariablen für einen Build – th3morg

0

Setzen Sie Schlüssel/Wert-Paare in der Datei appsettings.json unter der Eigenschaft "Values".

Verwandte Themen