Azure Storage Emulator を使用して BLOB ストレージを操作しようとしています。私はそれを機能させることができないようで、成功せずに一日を無駄にしました. これは開発者のストレージですが、403 禁止エラーが発生し続けます。ここの誰かが私を助けてくれることを願っています。
以前、この同じプログラムを Azure で正常に実行しました。しかし、実際にはまったく使用せずに 3 か月の試用期間が終了し、Azure の確認に戻ったので、ストレージ エミュレーターで実行する必要があります (接続文字列を開発ストレージに変更した後)。
私が行ったことを詳しく説明します。
まず、必要なものがすべてインストールされていることを確認させてください (と思います)。
Visual Studio 2012 Pro と Visual Studio 2012 Express for Web (無料) の両方を持っています。Web Platform インストーラーを使用して、Azure に必要な追加のものをインストールしました。プログラムの追加と削除を見ると、
- Windows Azure Tools for Microsoft Visual Studio 2012 -v2.1
- .NET 用 Windows Azure ライブラリ -v2.1
- Windows Azure エミュレーター -v2.1
- Windows Azure オーサリング ツール -v2.1
必要に応じて VS2012 でクラウド プロジェクトを作成できます。作成すると、エミュレーターで正常に起動します。したがって、私の問題はエミュレータのストレージのみにあるようです。
これが私がやったことです:
ステップ1。
新しい ASP.NET MVC4 プロジェクトを作成します。.NET フレームワーク 4.5 を使用しています。これにより、HomeController.cs と AccountController.cs を含む基本的なプロジェクト テンプレートが作成されます。
ステップ2。
NuGet を使用して「Windows Azure ストレージ」を取得します。これにより、プロジェクト参照に WindowsAzure.Storage.dll バージョン 2.0.6.1 が追加されると思います。それとは別に、私の参照には -Microsoft.WindowsAzure.Configuration v2.0.0.0 -Microsoft.WindowsAzure.Diagnostics v2.1.0.0 -Microsoft.WindowsAzure.ServiceRuntime v2.1.0.0 -Microsoft.WindowsAzure.StorageClient v1 も含まれていることがわかります.7.0.0
ステップ 3。
Web.config ファイルで、タグ内に次のタグを追加します
これは基本的に、エミュレーターを使用するときに誰もが使用することになっているアカウント名とキーです。
ステップ 4。
HomeController.cs でアクションを作成します。このアクションは、Azure BLOB ストレージにコンテナーを作成し、そこにファイルをアップロードすることになっています。これがコードです。ご覧のとおり、初心者の例で見られる標準的なコードです。
public ActionResult AddBlobToBlobContainerStorageEmulator()
{
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["EmulatorStorageConnectionString"]);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to the previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("myemulatortcont");
// Create the container if it doesn't already exist.
container.CreateIfNotExists();
// Retrieve reference to a blob named "mytestblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myemulatortestblob.jpg");
// Create or overwrite the "mytestblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"E:\TUTORIALS\Windows Azure\Azure NOTES and stuff\table.jpg"))
{
blockBlob.UploadFromStream(fileStream);
}
return Content("Blob uploaded to container on storage emulator");
}
ステップ 5。
コンピューティング エミュレーターが開始されていることを確認します: [スタート] > [すべてのプログラム] > [Windows Azure] > [エミュレーター] > [Windows Azure コンピューティング エミュレーター]
ステップ6。
それで全部です。私はクラウド プロジェクトなどを作成していないので、これを実行すると、プロジェクトのプロパティ (IIS Express とも呼ばれます) に従って「ローカル IIS Web サーバー」で実行されます。
ここで、[デバッグ] > [デバッグの開始] に移動すると、ブラウザー ウィンドウで期待どおりに localhost:57810 でサイトが起動します。
に移動すると
http://localhost:57810/Home/AddBlobToBlobContainerStorageEmulator
私のアクションメソッドを起動する必要があります。
代わりに私は見る
118行目が赤くなっているので、基本的にコンテナは作成できません。
誰かがここで何が悪いのか教えてもらえますか? 何らかの方法で開発ストレージ エミュレーターにアクセス許可を追加する必要がありますか? 禁止と書いてある理由がわかりません。
私のマシンに何か問題があるのではないか、それとも Azure 間に競合があるのではないかと考えていました。私のプロジェクトの dll のバージョンは、開発エミュレータに対して何らかの形で間違っていますか? それとも、v2.1 にバグがあるのでしょうか?
プロジェクトの作成方法を正確に説明しましたが、誰かがそれを実行してみたいと思っている場合は、すべてをアップロードしてもかまいません.
ご協力いただきありがとうございます。