Logic App连接器策略抛出‘Property Immutable’错误的排查与解决
问题:配置Dataverse连接器访问策略时出现PropertyImmutable错误的原因及解决方法
问题场景
现有连接Dataverse的Logic App Standard实例,需配置Access Policy允许工作流使用该连接器,但添加Access Policy时触发错误,错误信息如下:
"errorCode: PropertyImmutable. Message: The property 'ConnectionAceStorageEntity.PrincipalId' is immutable."
错误原因
这个错误的核心触发点有两个:
- 访问策略名称重复:如果重复部署同名的Access Policy,Azure会尝试更新已存在的策略,但
PrincipalId是访问策略的核心不可变属性,无法修改,因此抛出错误。 - 资源部署顺序问题:若Logic App的系统分配身份尚未完全创建完成,就尝试创建访问策略关联该身份,会导致Azure尝试写入未稳定的
PrincipalId,触发不可变属性校验失败。
解决方案
1. 使用唯一的访问策略名称
确保每次部署的访问策略名称唯一,可将策略名称与Logic App实例名绑定,避免重复覆盖已有策略:
resource dataverseAccessPolicy 'Microsoft.Web/connections/accessPolicies@2016-06-01' = { name: '${DataversePolicyName}-${LogicAppSiteName}' parent: DataverseConnection location: LogicAppLocation properties: { principal: { type: 'ActiveDirectory' identity: { tenantId: subscription().tenantId objectId: LogicAppSite.identity.principalId } } } }
2. 添加显式依赖确保身份创建完成
在访问策略资源中添加对Logic App的显式依赖,确保系统分配身份已生成后再创建访问策略:
resource dataverseAccessPolicy 'Microsoft.Web/connections/accessPolicies@2016-06-01' = { name: DataversePolicyName parent: DataverseConnection location: LogicAppLocation dependsOn: [LogicAppSite] // 强制等待Logic App创建完成,确保身份可用 properties: { principal: { type: 'ActiveDirectory' identity: { tenantId: subscription().tenantId objectId: LogicAppSite.identity.principalId } } } }
3. 清理已有冲突策略
如果之前已部署过同名的访问策略,先在Azure门户中找到该Dataverse连接器的访问策略列表,删除冲突的策略后,再重新部署Bicep模板。
内容的提问来源于stack exchange,提问作者tomab
相关产品推荐
相关产品推荐

