自分のサイトのすべてのファイル検索をAzureストレージに移動しようとしています(パスの問題により検索ファイルのエラーが発生しにくいと思われます)。これは聞こえるほど簡単ではありませんでした。私はストレージアカウントとコンテナに到達し、変数にブロブを読み込むことができますが、私はXDocumentに内容を取得する方法を見つけることができません。私は、blob変数のインテリセンスの下に表示されるファイルに関連するほとんどすべてのメソッドを試しました。AzureストレージからXDocumentをロードする適切な方法は何ですか
[TestMethod]
public void TestMethod1()
{
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["azurestorageconn"]);
var client = storageAccount.CreateCloudBlobClient();
//create a blob container with public accessibility
var sampleContainer = client.GetContainerReference(ConfigurationManager.AppSettings["azurecontainer"]);
sampleContainer.CreateIfNotExists();
sampleContainer.SetPermissions(new BlobContainerPermissions()
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
var blob = sampleContainer.GetBlockBlobReference(@"files\" + NavXmlFile);
XDocument xDoc;
//tried almost everything here
using (var xml = blob.OpenRead())
{
xDoc = XDocument.Load(xml);
}
Assert.IsNotNull(xDoc);
}
私は、ウェブ上のどこかここSO上XDocumentまたはXElementのにロードするXMLファイルの内容のいずれかの例を見つけるように見えることはできません。どんな助けもありがたい。
xmlドキュメントのサンプルは重要ではありません。
<Menus>
<Menu>
<MenuId>1</MenuId>
<ParentMenuId>0</ParentMenuId>
<MenuTitle>Home</MenuTitle>
<DisplayOrder>10</DisplayOrder>
<MenuAction>/Home/Index</MenuAction>
<MenuRoles></MenuRoles>
</Menu>
<Menu>
<MenuId>2</MenuId>
<ParentMenuId>0</ParentMenuId>
<MenuTitle>Languages</MenuTitle>
<DisplayOrder>20</DisplayOrder>
<MenuAction></MenuAction>
<MenuRoles></MenuRoles>
</Menu>
</Menus>
あなたはすべてのエラーを取得しているため、コードのですか? –
@ Gaurav Mantri ...そうでなければ、xml = blob.OpenRead行にAzureストレージ例外があります。どのような方法でコンテンツをプルしようとしても、エラーはどこに発生しますか。この特定のインスタンスでは、エラーはMicrosoft.WindowsAzure.Storage.StorageExceptionです。リモートサーバーからエラーが返されました。(404)が見つかりません。 ... blobを調べると、要求しているファイルからxmlが保持されていることがわかるので、男性は意味がありません。 – dinotom
エラーの詳細を共有していただきありがとうございます。 404エラーはBLOBが見つからないことを意味します。私はこれがあなたがブロブを参照している方法であることに気づいた: 'var blob = sampleContainer.GetBlockBlobReference(@" files \ "+ NavXmlFile);'。それを次のように変更できますか? 'var blob = sampleContainer.GetBlockBlobReference(@" files/"+ NavXmlFile);'?気がついたら、 "\"を "/"に変更しました。試して何が起こるか見てみましょう。 –