0

コンテナー内の特定の BLOB にアクセスしたいのですが、いくつかの異なる方法を試していますが、コンテナー内の特定の BLOB を見つけるための最良の方法を知りたいです。これが私のコードです:

            var game = Get<Game>().SingleOrDefault(x => x.Name == name);

            var account = CloudStorageAccount.FromConfigurationSetting("blobConnection");

            var container = account
                                   .CreateCloudBlobClient()
                                   .GetContainerReference("gamehtmls");

            var blobUri = container.ListBlobs().SingleOrDefault(x => x.Uri.ToString().ToLower().Contains(name.ToLower()));

            var blobName = blobUri.Uri.AbsolutePath.Replace("/gamehtmls/", "");

            var blob = container.GetBlobReference(String.Format("{0}index.html", blobName));
            blob.Properties.ContentType = "text/html";

また、このコンテナには、Galactians と Galactians2 という名前の 2 つのゲームがあるため、私のコードはこのゲームでは機能しません。

誰か私にアドバイスはありますか?

ありがとうございました ...

4

1 に答える 1

1

あなたの問題は、Azure の問題というよりも、ディレクトリの検索方法に関する問題です。

String.Contains は、文字列 'Galactians' を 'Galactians '、'Galactians2' および 'my cat is named Galactians99' で含むすべてのディレクトリと一致します。多分ただ...

var blobUri = container.ListBlobs().SingleOrDefault(x => x.Uri.ToString().ToLower() == name.ToLower());

...名前と正確に一致するか、検出できない余分な文字がある場合は String.StartsWith と一致します。

于 2013-02-18T13:55:16.983 に答える