Azure Function EventGridTrigger绑定eventGridEvent参数报错如何解决?
问题根因
报错的核心原因是你在CosmosDB输入绑定中使用了{eventGridEvent}作为绑定表达式,该表达式尝试直接传入整个EventGridEvent复杂对象,但Azure函数的绑定规则仅支持解析触发器参数的具体属性值,不支持直接绑定整个对象作为参数值。
你之前能正常运行大概率是旧版本的Azure Functions运行时/EventGrid扩展对绑定表达式的校验逻辑较为宽松,升级SignalR包时连带升级了相关依赖的版本,更严格的校验逻辑触发了本次报错,和SignalR本身没有直接关联。
修复方案
你可以正常使用CosmosDB输入绑定,只需将绑定表达式修改为对应EventGridEvent的属性路径即可:
- 先确认你存储在CosmosDB中的
AiAssetStatus文档的Id和分区键,对应EventGridEvent的哪个属性:- 如果对应EventGrid事件自带的唯一ID,将绑定改为:
[CosmosDB( databaseName: "%COSMOS_DB_DATABASE_NAME%", collectionName: "%COSMOS_DB_CONTAINER_ID%", ConnectionStringSetting = "COSMOS_DB_CONNECTION_STRING", Id = "{Id}", PartitionKey = "{Id}")] AiAssetStatus aiAssetStatus - 如果对应
EventGridEvent的Subject字段,改为{Subject}即可; - 如果对应
EventGridEvent的Data中的自定义字段(比如Data下的AssetId),改为{Data.AssetId}即可。
- 如果对应EventGrid事件自带的唯一ID,将绑定改为:
- 调整后重新启动函数即可正常触发绑定逻辑。
内容的提问来源于stack exchange,提问作者LStrike
相关产品推荐
相关产品推荐

