Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K této diagnostice dochází při pokusu o přístup k vlastnosti u hodnoty, která může nebo nemusí být null. Diagnostika bude vyvolána také při pokusu o přístup k vlastnosti u podmíněného prostředku (to znamená prostředku deklarovaného pomocí if klauzule v Bicep). Odkazy na prostředky s podmínkou false obvykle způsobí selhání nasazení s chybou ověření.
Description
Hodnota typu< "typ> prostředku | Null může být null na začátku nasazení, což by způsobilo selhání tohoto přístupového výrazu (a celkového nasazení s ním).
Úroveň
Výstraha
Solutions
Pokud může být hodnota null a vaše šablona může bezpečně zpracovat hodnotu null pro celý výraz, použijte operátor safe-dereference. Tento zkratový okruh přístup v případě, že základní výraz má hodnotu null nebo prostředek, jehož podmínkou je false.
Pokud jste si jisti, že hodnota nebude nikdy null, použijte operátor null-forgiving k tomu, aby kompilátoru řekl, že je bezpečný. Tím se zakáže ověřování v době kompilace, ale ověření za běhu se bude provádět i nadále.
Examples
Následující příklad vyvolá diagnostiku, protože Bicep nemůže zaručit, že accounts[i] existuje pro každý i in range(0, storageCount). Některé indexy se přeskočí, takže přímé indexování je nebezpečné.
param storageCount int
resource accounts 'Microsoft.Storage/storageAccounts@2015-01-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
output storageEndpoints array = [for i in range(0, storageCount): accounts[i].properties.primaryEndpoints.blob]
Diagnostiku můžete opravit pomocí operátoru safe-dereference:
param storageCount int
resource accounts 'Microsoft.Storage/storageAccounts@2015-01-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
output storageEndpoints array = [for i in range(0, storageCount): accounts[i].?properties.primaryEndpoints.blob]
Následující příklad vyvolá diagnostiku, protože if podmínka znepřístupňuje délku pole v době kompilace, takže Bicep nemůže bezpečně povolit přímé indexování, jako je accounts[0].
param storageCount int = 2
resource accounts 'Microsoft.Storage/storageAccounts@2015-01-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
output firstOne object = accounts[0].properties
Diagnostiku můžete opravit pomocí operátoru null-forgiving:
param storageCount int = 2
resource accounts 'Microsoft.Storage/storageAccounts@2015-01-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
output firstOne object = accounts[0]!.properties
Další kroky
Další informace o diagnostice Bicep najdete v tématu Diagnostika jádra Bicep.