Partilhar via


O nome especificado já está em uso

Ao fazer a implementação em Azure, as implantações iniciais podem falhar com um erro semelhante ao seguinte:

"O nome especificado já está em uso"

Este artigo descreve várias técnicas para evitar esse problema.

Sintomas

Ao implantar um projeto de .NET Aspire para Azure, os recursos no modelo de aplicativo são transformados em recursos Azure. Alguns recursos Azure têm nomes com escopo global, como Configuração de Aplicativo Azure, onde todas as instâncias estão no namespace global [name].azconfig.io.

O valor de [name] é derivado do nome do recurso .NET.NET Aspire, juntamente com caracteres aleatórios com base no nome do grupo de recursos. No entanto, a cadeia de caracteres gerada pode exceder o comprimento permitido para o nome do recurso na Configuração do aplicativo. Como resultado, alguns caracteres são truncados para garantir a conformidade.

Quando ocorre um conflito no namespace global, o recurso não é implantado porque a combinação de [name]+[truncated hash] não é exclusiva o suficiente.

Soluções possíveis

Uma solução alternativa é evitar o uso de nomes comuns como appconfig ou storage para recursos. Em vez disso, escolha um nome mais significativo e específico. Isso reduz o potencial de conflito, mas não o elimina completamente. Nesses casos, pode-se usar métodos de callback para definir um nome específico e evitar completamente o uso da string calculada.

Considere o seguinte exemplo:

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