我正在研究Azure功能,每次在CosmosDB中更新文档时都会触发该功能。我已经成功完成了它,但是现在我想避免在CosmosDBTrigger装饰器中对值进行硬编码。
正如我在另一篇SO帖子中所看到的,我已经尝试使用'%'符号引用存储的应用程序值。但是,它似乎不起作用。帖子是:Is it possible to configure Azure C# function DocumentDB attribute arguments?
这是我要努力工作的解决方案:
public static void Run([CosmosDBTrigger(
databaseName: "%LogLevelsCachingDatabaseName%",
collectionName: "%LogLevelsCachingCollectionName%",
ConnectionStringSetting = "%LogLevelsCachingDatabaseSetting%",
LeaseCollectionName = "%LogLevelsCachingLeaseCollectionName%",
StartFromBeginning = true
)]IReadOnlyList<Document> input, ILogger log)
{
if (input == null || input.Count <= 0) return;
工作解决方案完全相同,但是'%'之间的值是硬编码值。
这是我将Azure函数发布到Azure DevOps时的输出。请注意,ConnectionStringSetting值有效,因为我能够运行Azure函数,而硬编码值没有任何问题。
错误:
函数(CacheLogLevels)错误:Microsoft.Azure.WebJobs.Host:错误索引方法'CacheLogLevels'。 Microsoft.Azure.WebJobs.Extensions.CosmosDB:无法为数据库%LogLevelsCachingDatabaseName%中具有租约%LogLevelsCachingLeaseCollectionName%的数据库%LogLevelsCachingDatabaseName%中的%LogLevelsCachingCollectionName%创建集合信息:无法解析属性'CosmosDBTriggerAttribute.ConnectionStringSetting'的应用程序设置。确保应用设置存在并且具有有效值。 Microsoft.Azure.WebJobs.Extensions.CosmosDB:无法解析属性“ CosmosDBTriggerAttribute.ConnectionStringSetting”的应用程序设置。确保应用设置存在并且具有有效值。 会话ID:34dd30479d6a440caf063493bd1abc3d
时间戳:2019-07-17T22:35:01.376Z
我想使用来自Azure Function App配置的值:
Azure Function应用配置
非常感谢您阅读我的问题,祝您有美好的一天!
维托里奥
答案 0 :(得分:1)
同意@vladimir
ConnectionStringSettings和LeaseConnectionStringSetting参数自动将值解析为应用设置
有两种方法可以做到这一点:
希望有帮助
答案 1 :(得分:0)
ConnectionStringSettings 和 LeaseConnectionStringSetting 参数自动将值解析为应用程序设置,没有百分号(请参见trigger configuration):
public static void Run([CosmosDBTrigger(
databaseName: "%LogLevelsCachingDatabaseName%",
collectionName: "%LogLevelsCachingCollectionName%",
ConnectionStringSetting = "LogLevelsCachingDatabaseSetting", // <-- remove %-signs
LeaseCollectionName = "%LogLevelsCachingLeaseCollectionName%",
StartFromBeginning = true
)]IReadOnlyList<Document> input, ILogger log)