【问题标题】:Unable to create Storage account on Azure C#无法在 Azure C# 上创建存储帐户
【发布时间】:2019-03-26 23:05:42
【问题描述】:

我正在尝试在 asp.net MVC 应用程序中从 c# 创建一个存储,但它抛出错误帐户类型 StandardLRS 无效,如下所示

以下是我用于创建的代码

string token = GetAccessToken("sub id", "app name", "tenant id");
                var Credentials = new TokenCredentials(token);

                var resourceManagementClient = new ResourceManagementClient(Credentials);
                resourceManagementClient.SubscriptionId = "sub id";

                var storageProvider = resourceManagementClient.Providers.Register("Microsoft.Storage");

                var storageManagementClient = new StorageManagementClient(Credentials);
                storageManagementClient.SubscriptionId = "sub id";

                string rgName = "TimedCloudRG" + location.Trim().Replace(" ", string.Empty);

                var resourceGroup = new Microsoft.Azure.Management.Resources.Models.ResourceGroup
                {
                    Location = location
                };
                var rgResult = resourceManagementClient.ResourceGroups.CreateOrUpdate(rgName, resourceGroup);

                Microsoft.Azure.Management.Storage.Models.Sku DefaultSku = new Microsoft.Azure.Management.Storage.Models.Sku(Microsoft.Azure.Management.Storage.Models.SkuName.StandardLRS);
                Microsoft.Azure.Management.Storage.Models.Kind DefaultKind = Microsoft.Azure.Management.Storage.Models.Kind.Storage;                       
                Microsoft.Azure.Management.Storage.Models.StorageAccountCreateParameters parameters = new Microsoft.Azure.Management.Storage.Models.StorageAccountCreateParameters()
                {
                    Kind = DefaultKind,
                    Sku = DefaultSku,                    
                    Location = rgResult.Location
                };


                string stAccName = "TCStorageAccount"+Guid.NewGuid().ToString().Substring(0, 8);

                var storageAccount = await storageManagementClient.StorageAccounts.CreateAsync(rgName, stAccName, parameters);

令人惊讶的是,当我在控制台应用程序上运行它时,它运行良好。我也尝试安装 Microsoft.Azure.Management.Storage.Fluent 包,但无法安装为我的项目 .net 框架选择为 4.5.1,并且该版本不支持此包。

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc azure azure-storage-account


    【解决方案1】:

    根据您的描述,我利用支持.NETFramework 4.5Microsoft.Azure.Management.Storage 6.2.0-preview 来检查这个问题。我将Location 指定为West US,我可以创建我的存储帐户。

    string stAccName = "TCStorageAccount"+Guid.NewGuid().ToString().Substring(0, 8);

    AFAIK,您的帐户名称不是有效的存储帐户名称。存储帐户名称的长度必须介于 3 到 24 个字符之间,并且只能使用数字和小写字母

    我尝试在 Azure Portal 上创建存储帐户,结果意外发现如下:

    正如Locally redundant storage所说,如下:

    由于数据治理要求,某些应用程序仅限于在一个国家/地区内复制数据。配对区域可能位于另一个国家/地区。有关区域对的更多信息,请参阅Azure regions

    此外,您可以使用支持.NETFramework 4.5Microsoft.Azure.Management.Storage.Fluent 1.0.0

    更新:

    我创建了一个示例AspDotNet-MVC-CreateAzureStorageAccount,并在HomeController.cs 下定义了用于创建存储帐户的CreateAzureStorageAccount 操作。这是测试结果,您可以参考如下:

    【讨论】:

    • 非常感谢您的回复。我已将 DLL Microsoft.Azure.Management.Storage 从版本 5.2.0-preview 升级到 6.5.0-preview,并且我已经升级了我的代码,根据您的建议,我现在将存储帐户名称设为小写,但我有还是一样的例外。我尝试过使用相同的位置,但它仍然给我同样的错误,即帐户类型无效。即使我尝试了所有帐户类型,如标准 GRS 等,但仍然是同样的例外。
    • 您创建存储帐户的位置在哪里?您是否尝试在 Azure 门户上创建存储帐户来缩小此问题?
    • 我能够在门户上使用标准LRS 在美国西部、澳大利亚东部在门户上创建存储帐户,没有任何问题,但使用 c# 代码则没有。
    • 我用创建azure存储账户的代码示例更新了我的答案,你可以参考一下。
    • 你解决了这个问题吗?您的问题的原因是什么?
    【解决方案2】:

    我在直接调用 REST API 时遇到了类似的问题。我错过了标准和 LRS 之间的下划线。 AccountType 需要完全按照 ARM 模板中的说明进行指定,在本例中为 Standard_LRS 或 Standard_GRS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-15
      • 2019-11-03
      • 2017-11-23
      • 2016-07-17
      • 2017-05-04
      • 2014-06-17
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多