Udostępnij za pośrednictwem


Określona nazwa jest już używana

Podczas wdrażania w Azure początkowe wdrożenia mogą zakończyć się niepowodzeniem z powodu błędu podobnego do następującego:

"Określona nazwa jest już używana"

W tym artykule opisano kilka technik, które pozwalają uniknąć tego problemu.

Objawy

Podczas wdrażania projektu .NET Aspire do Azure, zasoby w modelu aplikacji są przekształcane w zasoby Azure. Niektóre zasoby Azure mają nazwy o globalnym zakresie, takie jak Azure App Configuration, gdzie wszystkie wystąpienia znajdują się w globalnej przestrzeni nazw [name].azconfig.io.

Wartość [name] jest wyprowadzana z nazwy zasobu .NET.NET Aspire, wraz z losowo generowanymi znakami na podstawie nazwy grupy zasobów. Wygenerowany ciąg może jednak przekraczać dozwoloną długość nazwy zasobu w usłudze App Configuration. W związku z tym niektóre znaki są obcinane w celu zapewnienia zgodności.

W przypadku wystąpienia konfliktu w globalnej przestrzeni nazw nie można wdrożyć zasobu, ponieważ kombinacja [name]+[truncated hash] nie jest wystarczająco unikatowa.

Możliwe rozwiązania

Jednym z obejść jest unikanie używania nazw pospolitych, takich jak appconfig lub storage dla zasobów. Zamiast tego wybierz bardziej znaczącą i konkretną nazwę. Zmniejsza to potencjał konfliktu, ale nie eliminuje go całkowicie. W takich przypadkach można użyć metod wywołania zwrotnego, aby ustawić określoną nazwę i uniknąć całkowitego użycia obliczonego ciągu.

Rozważmy następujący przykład:

var appConfig = builder.AddAzureAppConfiguration(
    "appConfig",
    (resource, construct, store) =>
{
    store.AssignProperty(p => p.Name, "'noncalculatedname'");
});