【问题标题】:Using embedded file in VS2008 ASP.NET Project在 VS2008 ASP.NET 项目中使用嵌入文件
【发布时间】:2010-08-19 11:49:43
【问题描述】:

我有一个 ASP.NET 项目,想在项目中包含一个 XML 文件来存储一些相对静态的数据。为此,我从解决方案上下文菜单中选择了“添加文件”并选择了我的 XML 文件。将它添加到我的项目后,我想从代码中加载 XML。我尝试了以下方法:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("MyData.xml");

我也试过了:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("~/MyData.xml");

但它似乎正在查看当前目录(即我的 VS2008 目录)而不是项目。我做错了吗?有没有办法像这样简单地引用嵌入在项目中的资源?

【问题讨论】:

    标签: c# .net asp.net xml visual-studio-2008


    【解决方案1】:

    当您第二次尝试中的波浪号“~”是在控件属性(如 HyperLink.NavigateUrl)中设置的文件 url 的一部分时,它会被评估。如果它只是传递给 xmlDocument.Load() 的字符串的一部分,则必须使用 Server.MapPath("~/MyData.xml") 显式评估它

    或者,

    您可以将文件作为嵌入资源包含在内。右键单击解决方案中的文件,然后在 Build Action 中选择 Embedded Resource。在“复制到输出目录”选项中,选择“不复制”

    以下是如何读取文件的示例:

            var assembly = Assembly.GetExecutingAssembly();
            if (assembly != null)
            {
                var stream = assembly.GetManifestResourceStream("RootProjectNamespace.MyData.xml");
                if (stream != null)
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(stream);
                }
            }
    

    注意,您必须在文件名前加上项目的默认命名空间。您可以通过右键单击您的项目,选择属性并在“应用程序”选项卡中找到它,默认命名空间位于顶部。

    【讨论】:

      【解决方案2】:

      您在 ASP.NET 项目中添加 XML 文件所遵循的步骤不会像我们的 .aspx 页面那样将它嵌入到您的应用程序中。

      你可以试试

      XmlDocument xmlDoc = new XmlDocument();
      xmlDoc.Load(Server.MapPath("~/MyData.xml"));
      

      最好将这些文件保存在 App_Data 文件夹中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2010-11-14
        • 2015-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多