【问题标题】:Connecting Azure Blob with Azure Website将 Azure Blob 与 Azure 网站连接
【发布时间】:2014-09-05 06:11:58
【问题描述】:

我正在尝试将 Azure 网站连接到 Azure blob(我打算在容器中托管一些文件,然后从我的网站中获取它们)。

我从本教程开始: http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/

我部署了我的网站,然后开始学习本教程: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection-string

由于我使用的是 Azure 网站,因此我将以下代码添加到我的 web.config 文件(在 WebApplication1 项目下)。 Views 文件夹下还有一个 web.config 文件,但我没有修改。

 <configuration>
    <appSettings>
       <add key="StorageConnectionString" 
            value="DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key" />
    </appSettings>
 </configuration>

我按照教程中的所有步骤安装了相关的 NuGet 包,然后将这些命名空间包含在我的 Controllers/HomeController.cs 文件中:

using System.Configuration;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

然后我在ActionResult Index() 方法(默认运行)中添加了以下语句。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

当我尝试运行解决方案时,我现在收到此错误:

我还尝试直接将StorageConnectionString 的值(使用我的帐户名和密钥)而不是在以下语句中引用它:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key"].ConnectionString);

我仍然遇到同样的错误。我似乎无法在互联网上找到任何东西。有什么想法吗?

谢谢!

【问题讨论】:

  • 如果您提供 InnerException 可能会有所帮助,因为它可以提供一些有用的信息。有几件事要尝试...首先,您的第二个示例是尝试搜索名为“DefaultEndpointsProtocol....”的 ConnectionString,而这只是值。其次,直接添加存储账户字符串即可,即 CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key"]);

标签: c# asp.net azure azure-blob-storage azure-web-app-service


【解决方案1】:

您的代码存在根本性错误。

首先你设置一个 AppSetting:

 <configuration>
    <appSettings>
       <add key="StorageConnectionString" 
            value="DefaultEndpointsProtocol=https;AccountName=account-   name;AccountKey=account-key" />
    </appSettings>
 </configuration>

然后你尝试获取连接字符串:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

这根本行不通。设置 AppSetting 时,需要阅读 AppSetting。设置 ConnectionString 时,需要读取 Connection String。

因此,解决方案是保持 web.config 不变,并将获取存储帐户的行更改为:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);

或保留连接字符串的行,但将 web.config 更改为:

 <configuration>
    <connectionStrings>
       <add name="StorageConnectionString" 
            connectionString="DefaultEndpointsProtocol=https;AccountName=account-   name;AccountKey=account-key" providerName="System.Data.SqlClient" />
    </connectionStrings>
 </configuration>

当然,您必须为云存储帐户和存储帐户密钥输入您的真实值(account-name 将永远无法使用)。

【讨论】:

    【解决方案2】:

    这是来自 Azure 的更糟糕的文档,文章确实告诉您创建 AppSetting,然后代码告诉您检索 ConnectionString。

    另一种解决方法是将详细信息存储为 ConnectionString 并保持代码不变:

    <add name="StorageConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=your-account;AccountKey=your-key" />
    

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 2023-03-12
      相关资源
      最近更新 更多