c# - 在 Azure 函数中读取应用程序设置时遇到问题
问题描述
这是我第一次尝试创建 Azure App Function。在我的本地开发机器上运行时,我已经让它工作了。现在我已将它部署到 Azure 中,并将调试器附加到它(非常酷,顺便说一句!)。
在我的本地主机上运行时,我可以将该local.settngs.json
文件用于所有应用程序设置。这很好用。但是,在 Azure 中远程运行该功能时,我似乎在访问应用程序设置的简单过程中遇到了障碍。
首先(这是我稍后会打的一场战斗)我确信有一种方法可以根据里面的内容自动填充 Azure 函数中的设置local.settngs.json
,但现在,我都是手动添加的。
现在,让我们看一下StorageConnectionString
who's value 的设置,如下所示:
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");
在所有情况下,我都会收到此错误:
错误信息:
值不能为空。参数名称:itemName
堆栈跟踪:
在 Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.AssertNotNullOrEmpty(String paramName, String value) 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Core\Util\CommonUtility.cs:line 143 在 Microsoft.WindowsAzure.Storage.File.CloudFileDirectory.GetDirectoryReference(String itemName) 在 c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\File\CloudFileDirectory.Common.cs:XXXXXXX 的第 224 行。 Common.AzureFunctions.ProcessInbound.DoBooksExist(BookSource bookSource) 在 XXXXXXX.Common.AzureFunctions.ProcessInbound.Run(TimerInfo myTimer, TraceWriter 日志)
这个错误让我有点难过,因为它甚至似乎都不适用。例如,为什么它在调用GetDirectoryReference(String itemName)
?
解决方案
要获取环境变量或应用设置值,请使用
System.Environment.GetEnvironmentVariable
,如以下代码示例所示:
public static string GetEnvironmentVariable(string name)
{
return System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
}
在本地开发和在 Azure 中运行时,都可以从环境变量中读取应用设置。在本地开发时,应用程序设置来自local.settings.json文件
Values
中的集合。在本地和 Azure 这两种环境中,检索命名应用设置的值。例如,当您在本地运行时,如果您的local.settings.json文件包含. 或者您可以使用System.Environment.GetEnvironmentVariable:GetEnvironmentVariable("<app setting name>")
{ "Values": { "WEBSITE_SITE_NAME": "My Site Name" } }
推荐阅读
- amazon-web-services - 胶水作业将 S3 数据加载到不同区域的 Redshift 集群中成功但不返回数据
- linux - 如何使用 read 系统调用解析 sshd 进程读取的键盘信息
- discord - 如何编辑嵌入和添加新字段?
- python - ORTools:Multiple Vehicles:大型车辆不应该为低于给定需求的节点提供服务
- c# - 停止屏幕阅读器以阅读我在 WPF 中的控件类型
- php - PHP如何在离开页面后完全销毁会话
- python - 如何在pyqt5文本浏览器上打印连续数据
- mysql - 为每个值运行 MySQL SELECT 查询,由另一个 SELECT 返回
- javascript - 如何在另一个文本区域中显示文本区域和可编辑 div 中突出显示的文本的位置?
- cakephp - CakePHP 1.3 迁移到 4.x