你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

肱二头肌诊断代码 - BCP036

当你给一个属性赋予一个期望数据类型与该值类型不兼容时,就会发生这种诊断。

Description

属性 <名称> 期望值为类型 <为datatype> ,但提供的值为类型 <datatype>。

级别

警告 / 错误

解决方案

分配一个具有正确数据类型的值。

示例

以下示例提出了诊断问题,因为 sku 被定义为字符串,而非整数:

type storageAccountConfigType = {
  name: string
  sku: string
}

param foo storageAccountConfigType = {
  name: 'myStorage'
  sku: 2
}

可以通过将字符串值分配给 sku 来解决此问题:

type storageAccountConfigType = {
  name: string
  sku: string
}

param foo storageAccountConfigType = {
  name: 'myStorage'
  sku: 'Standard_LRS' 
}

以下示例提出诊断问题,是因为该 accessPolicies 属性期望单个对象数组 AccessPolicyEntry 。 循环内嵌套括号[ ... ]会让它生成一个数组数组。

param principalIds array = [
  'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'
]

resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' = {
  name: 'my-kv-001'
  location: resourceGroup().location
  properties: {
    tenantId: subscription().tenantId
    sku: {
      family: 'A'
      name: 'standard'
    }
    accessPolicies: [
      for principalId in principalIds: [ // <--- The extra array brackets here [ ]
        {
          objectId: principalId
          tenantId: subscription().tenantId
          permissions: {
            secrets: ['Get', 'List']
          }
        }
      ]
    ]
  }
}

解决方法是移除循环中生成物品周围不必要的数组括号([])。 这将创建单个 AccessPolicyEntry 对象数组,符合该 accessPolicies 属性的预期。

param principalIds array = [
  'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
  'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'
]

resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' = {
  name: 'my-kv-001'
  location: resourceGroup().location
  properties: {
    tenantId: subscription().tenantId
    sku: {
      family: 'A'
      name: 'standard'
    }
    accessPolicies: [
      for principalId in principalIds: {
        objectId: principalId
        tenantId: subscription().tenantId
        permissions: {
          secrets: ['Get', 'List']
        }
      }
    ]
  }
}

后续步骤

有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断