共用方式為


指定的名稱已在使用中

在部署至 Azure 的初始階段,部署可能會失敗,並出現類似下列的錯誤:

「指定的名稱已在使用中」

本文說明數種避免此問題的技術。

癥狀

將 .NET Aspire 專案部署到 Azure時,應用程式模型中的資源 會轉換成 Azure 資源。 某些 Azure 資源具有全域範圍的名稱,例如 Azure 應用程式組態,其中所有實例都在 [name].azconfig.io 全域命名空間中。

[name] 的值衍生自 .NET.NET Aspire 資源名稱,以及根據資源組名稱生成的隨機字元。 不過,產生的字串可能會超過應用程式組態中資源名稱的允許長度。 因此,某些字元會遭到截斷,以確保合規性。

當全域命名空間發生衝突時,資源無法部署,因為 [name]+[truncated hash] 的組合不夠獨特。

可能的解決方案

其中一個因應措施是避免針對資源使用一般名稱,例如 appconfigstorage。 相反地,請選擇更有意義的特定名稱。 這樣可減少衝突的可能性,但不會完全消除衝突。 在這種情況下,您可以使用回呼方法來設定特定名稱,並避免完全使用計算字串。

請考慮下列範例:

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