Bicep Diagnosecode – BCP033

Diese Diagnose tritt auf, wenn Sie einen Wert eines nicht übereinstimmenen Datentyps zuweisen.

Beschreibung

Es wurde ein Typwert <data-type> erwartet, der angegebene Wert ist jedoch vom Typ <data-type>.

Grad

Warnung / Fehler

Lösung

Verwenden Sie den erwarteten Datentyp. Wenn der bereitgestellte Wert ein Token ist, schließen Sie ihn in die Any()-Funktion ein, um das Problem zu beheben.

Beispiele

Im folgenden Beispiel wird die Diagnose ausgelöst, da der erwartete Datentyp eine Zeichenfolge ist. Der tatsächliche angegebene Wert ist eine ganze Zahl:

var myValue = 5

output myString string = myValue

Sie können die Diagnose beheben, indem Sie einen Zeichenfolgenwert angeben:

var myValue = '5'

output myString string = myValue

In Azure Bicep ist das Auftreten von Error BCP033 bei verwendung von deployment().location als Standardwert für einen Parameter, der durch einen @allowed-Dekoror eingeschränkt ist, ein gängiges Szenario. Dieser Fehler tritt aufgrund des strengen Kompilierungszeitsicherheitsmechanismus Bicep auf. Beispiel:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
param location string = deployment().location

Wenn Sie die Standardeinstellung für den Metadatenspeicherort der aktuellen Bereitstellung beibehalten möchten, können Sie die Überprüfung des Kompilierungszeittyps umgehen, indem Sie die any()-Funktion von Bicep verwenden. Diese Funktion weist den Compiler an, den Ausdruck als lose eingegeben zu behandeln:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
// The any() function suppresses the BCP033 type-mismatch error
param location string = any(deployment().location)

Wenn Ihre Bereitstellung starr an einen einzelnen Bereich gebunden ist, können Sie die Verwendung der dynamischen deployment().location Metadaten vollständig vermeiden und explizit einen Standardwert zuweisen, der in Ihrer Liste vorhanden ist.

Nächste Schritte

Weitere Informationen zur Bicep-Diagnose finden Sie unter Bicep-Kerndiagnose.