【问题标题】:downloading the content of an xml file from Azure Blob Storage从 Azure Blob 存储下载 xml 文件的内容
【发布时间】:2017-02-09 01:51:16
【问题描述】:

为了防止我在一个项目的文件夹中有一个 Xml 文件并希望从其他项目访问它并且必须处理文件路径问题的常见问题,我想直接从下载 Xml 文件内容它现在所在的 Azure Blob 存储。

虽然我看到很多关于如何将图像下载到流中的示例,但不确定如何实现这一点,但不确定这对于 Xml 是如何工作的。

我目前正在使用以下内容(在我移动 Xml 文件之前一直有效)

public class MenuLoader
{
    //var rootpath = HttpContext.Current.Server.MapPath("~");
    private static readonly string NavMenuXmlPath = Path.Combine(ServicesHelpers.GetClassLibraryRootPath(),
        @"ServicesDataFiles\MRNavigationMenu.xml");
    );

    //load the menus, based on the users role into the AppCache
    public static void LoadMenus(IPrincipal principal)
    {
        var navXml = new NavigationMenusFromXml(NavMenuXmlPath);
        var nmim = new NavigationMenuItemManager(navXml);
        AppCache.Menus = nmim.Load(principal);
    }
}

我想消除所有与路径组合相关的 bs,只从 Azure 上的文件中下载 xml,即替换字符串

@"ServicesDataFiles\MRNavigationMenu.xml"

https://batlgroupimages.blob.core.windows.net:443/files/MRNavigationMenu.xml

当然,这是行不通的,但必须有办法将该 xml 加载到文件变量中以用于该方法。

注意:这是用于测试的 azure 上可公开访问的文件。

【问题讨论】:

  • 您能描述一下NavigationMenusFromXml 类在您的代码中的作用吗?
  • 这是一个很好的场景,我对不同项目的配置也是如此。听起来这与 Azure 没有任何关系。因为它是一个公共 blob,所以它只是一个普通的 HTTP 调用。见stackoverflow.com/questions/27108264/…
  • @Guarav...它从 xml 文件加载网站菜单标题。效果很好,问题是文件没有下载,因为路径生成错误。我想通过直接从 Azure 下载来消除这种情况
  • @David Betz...我想那是我必须走的路,只是想也许有更简单的方法。并不是说做上述是那么难..lol

标签: c# xml azure


【解决方案1】:

使用内存流。请记住在尝试读取之前将位置设置为零。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Xml;


namespace ConsoleApplication1
{
    class Program
    {
        const string URL = "https://batlgroupimages.blob.core.windows.net/files/MRNavigationMenu.xml";
        static void Main(string[] args)
        {
            MemoryStream stream = new MemoryStream();
            XmlWriter writer = XmlWriter.Create(stream);
            XmlDocument doc = new XmlDocument();
            doc.Load(URL);
            writer.WriteRaw(doc.OuterXml.ToString());
            writer.Flush();


        }
    }



}

【讨论】:

  • @jdweng...已经编写了代码并从 David Betz 评论中解决了
猜你喜欢
  • 2021-12-08
  • 2020-08-08
  • 2015-06-20
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2016-03-24
相关资源
最近更新 更多