这是我创建Azure应用功能的第一个步骤。在本地开发机上运行时,它已经可以正常工作了。现在,我已将其部署到Azure中,并将调试器附加到它(非常酷,顺便说一句!)。
在本地主机上运行时,我可以将local.settngs.json
文件用于所有应用程序设置。很好但是在Azure中远程运行该功能时,我似乎遇到了访问应用程序设置这一简单过程的障碍。
首先(这是一场战斗,我将在后面进行战斗)我确定有一种方法可以根据local.settngs.json
中的内容自动填充Azure Function中的设置,但是现在,我添加了它们全部手动。
现在,让我们看一下StorageConnectionString
的设置,其值看起来像这样:
DefaultEndpointsProtocol=https; AccountName=[redacted]; AccountKey=[redacted]; EndpointSuffix=core.windows.net
所有三种尝试获取值的尝试都可以在我的本地主机上进行,但是在远程Azure函数中进行调试时,这三种尝试也会失败:
string storageConString = ConfigurationManager.AppSettings["StorageConnectionString"];
string storageConString = CloudConfigurationManager.GetSetting("StorageConnectionString");
string storageConString = Environment.GetEnvironmentVariable("StorageConnectionString");
在所有情况下,我都会收到此错误:
错误消息:
值不能为null。参数名称:itemName
堆栈跟踪:
在Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.AssertNotNullOrEmpty(字符串paramName,字符串值)在c:\ Program Files(x86)\ Jenkins \ workspace \ release_dotnet_master \ Lib \ Common \ Core \ Util \ CommonUtility中。 c:\ Program Files(x86)\ Jenkins \ workspace \ release_dotnet_master \ Lib \ Common \ File \ CloudFileDirectory.Common.cs:line 224中Microsoft.WindowsAzure.Storage.File.CloudFileDirectory.GetDirectoryReference(String itemName)上的cs:line 143位于XXXXXXX.Common.AzureFunctions.ProcessInbound.DoBooksExist(BookSource bookSource)处,位于XXXXXXX.Common.AzureFunctions.ProcessInbound.Run(TimerInfo myTimer,TraceWriter log)
这个错误让我有些难过,因为它似乎根本不适用。例如,为什么要调用GetDirectoryReference(String itemName)
?
答案 0 :(得分:0)
要获取环境变量或应用设置值,请使用
System.Environment.GetEnvironmentVariable
,如以下代码示例所示:
public static string GetEnvironmentVariable(string name)
{
return System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
在本地开发和在Azure中运行时,都可以从环境变量中读取应用程序设置。在本地进行开发时,应用设置来自 local.settings.json 文件中的
Values
集合。在本地和Azure两种环境中,GetEnvironmentVariable("<app setting name>")
检索命名的应用程序设置的值。例如,当您在本地运行时,如果您的 local.settings.json 文件包含{ "Values": { "WEBSITE_SITE_NAME": "My Site Name" } }
,则将返回“我的网站名称”。 或者,您可以使用System.Environment.GetEnvironmentVariable:
取自Azure Functions C# developer reference - Environment variables
答案 1 :(得分:0)