我想访问容器中的特定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所以我的代码不能用于这个游戏。
有人对我有建议吗?
谢谢...
答案 0 :(得分:1)
您的问题更多地是您搜索目录的问题而不是Azure的问题。
String.Contains将匹配任何包含字符串'Galactians'和'Galactians','Galactians2'和'我的猫被命名为Galactians99'的目录。也许只是......
var blobUri = container.ListBlobs().SingleOrDefault(x => x.Uri.ToString().ToLower() == name.ToLower());
...将完全匹配名称,甚至是String.StartsWith,如果有一些额外的字符你无法检测到。