指定的名稱已在使用中
在部署至 Azure 的初始階段,部署可能會失敗,並出現類似下列的錯誤:
「指定的名稱已在使用中」
本文說明數種避免此問題的技術。
癥狀
將 .NET Aspire 專案部署到 Azure時,應用程式模型中的資源 會轉換成 Azure 資源。 某些 Azure 資源具有全域範圍的名稱,例如 Azure 應用程式組態,其中所有實例都在 [name].azconfig.io
全域命名空間中。
[name]
的值衍生自 .NET.NET Aspire 資源名稱,以及根據資源組名稱生成的隨機字元。 不過,產生的字串可能會超過應用程式組態中資源名稱的允許長度。 因此,某些字元會遭到截斷,以確保合規性。
當全域命名空間發生衝突時,資源無法部署,因為 [name]+[truncated hash]
的組合不夠獨特。
可能的解決方案
其中一個因應措施是避免針對資源使用一般名稱,例如 appconfig
或 storage
。 相反地,請選擇更有意義的特定名稱。 這樣可減少衝突的可能性,但不會完全消除衝突。 在這種情況下,您可以使用回呼方法來設定特定名稱,並避免完全使用計算字串。
請考慮下列範例:
var appConfig = builder.AddAzureAppConfiguration(
"appConfig",
(resource, construct, store) =>
{
store.AssignProperty(p => p.Name, "'noncalculatedname'");
});