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'");
});