web-dev-qa-db-ja.com

AzureBlobをAzureWebサイトに接続する

AzureWebサイトをAzureBLOBに接続しようとしています(コンテナーでいくつかのファイルをホストしてから、Webサイトからそれらを取得する予定です)。

私はこのチュートリアルから始めました: http://Azure.Microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/

Webサイトを展開してから、このチュートリアルに従い始めました: http://Azure.Microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection -文字列

Azure Webサイトを使用していたので、次のコードを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);
_

ソリューションを実行しようとすると、次のエラーが発生します。

enter image description here

また、次のステートメントで参照する代わりに、StorageConnectionStringの値(アカウント名とキーを含む)を直接入力してみました。

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

それでも同じエラーが発生します。インターネットで何も見つからないようです。何か案は?

ありがとう!

10
Order66

コードに根本的な間違いがあります。

まず、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を設定するときは、ConnectionStringを読み取る必要があります。

したがって、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は単に機能しません)。

25
astaykov

これはAzureからのより悪いドキュメントです。この記事では、実際にAppSettingを作成するように指示されてから、コードでConnectionStringを取得するように指示されています。

別の修正方法は、詳細をConnectionStringとして保存し、コードをそのままにしておくことです。

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