2017-01-05 38 views
2

我正在用几个api密钥在本地测试azure函数。什么是存储环境变量的最佳地点,以及如何访问它们?我试图存储环境变量的最佳地点

System.Environment.GetEnvironmentVariable("name")} 

,但我不知道那里的环境变量存储。

谢谢!

回答

2

你应该有一个名为local.settings.json的文件。下面是Functions-Run-Local

蔚蓝的网站它指出

这些设置也可以在你的代码的环境变量读取。在C#中,使用System.Environment.GetEnvironmentVariable或ConfigurationManager.AppSettings。在JavaScript中,使用process.env。指定为系统环境变量的设置优先于local.settings.json文件中的值。

例如local.settings.json

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

它说,你需要把下local.settings.json内属性的应用程序设置。

检索我使用ConfigurationManager.AppSettings["CustomSetting"],因为它允许您检索连接字符串。

我刚刚玩过这个,发现你必须有一个字符串键和一个字符串值。当我尝试了一个小节时(例如在appsettings.json中),我得到了一个错误。我不得不让local.settings.json看起来像这样:

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

你用这个做环境转化吗?即我的开发环境值与产品不同。 –

+0

您可以通过更新Azure中的函数应用程序来控制此:) – chris31389

+0

谢谢!刚刚发现,昨晚。 –

2

要存储API密钥,您可以使用应用程序设置。细节: https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings#application-settings

为了获得环境变量或一个应用程序的设定值,使用System.Environment.GetEnvironmentVariable,作为显示在下面的代码例如:

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); 
} 

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

由于,Alexey

+0

不错的文章。浏览天蓝色的页面很难找到这样的内容。我实际上希望在本地进行测试,而不需要将设置存储在Azure中,我从上面收集的关键字/值对属于appSettings.json属性下的属性。 – DarthVadar123451

+0

你可以举一个local.settings.json如何查找AzureWebJobsStorage和WEBSITE_SITE_NAME的例子吗? – chris31389

+0

看起来您可以在Azure中使用env变量,并在本地运行时将其设置在visual studio中:https://msdn.microsoft.com/en-us/library/669zx6zc.aspx#设置构建的环境变量 – th3morg

0

将键/值对放入“Values”属性下的appsettings.json文件中。