【问题标题】:Cannot read XML file with ReadXml Dataset Method无法使用 ReadXml 数据集方法读取 XML 文件
【发布时间】:2012-11-10 20:28:25
【问题描述】:

我有以下方法:

public static DataSet BringProducts()
{
    DataSet dataSet = new DataSet();
    var dir = @"ProductsCookieData.xml";
    if (File.Exists(dir))    //without File.Exists, same problem.
    {
        dataSet.ReadXml(dir);
    }
    return dataSet;
}

文件存在,但方法永远看不到它。该文件在 C:\ 中,我在其他位置尝试过,同样的情况发生了。也试过不使用静态。

如果我不使用File.Exists(),则会抛出 FileNotFoundException。

【问题讨论】:

  • 如果FileNotFound 被抛出,那么文件在你认为的位置不存在。这是 ASP.Net 还是 Windows 应用程序?
  • 这是一个带有 C# 代码的 ASP.net 网络表单
  • 您是否尝试过在文件上创建 FileStream 并将流的引用传递给 readxml?您也可以尝试将文件的绝对路径传递给 dataSet.ReadXml()-call 吗?
  • 您可以访问 C:\?您的 Web 应用程序位于哪个文件夹中?
  • @Aschratt 与 FileStream 相同,找不到文件。字符串 dir = @"C:\ProductsCookieData.xml"; FileStream fileName = new FileStream(dir, FileMode.Open);

标签: c# asp.net xml dataset filenotfoundexception


【解决方案1】:

用你声明文件的方式

var dir = @"ProductsCookieData.xml";

您的文件必须与您的代码/当前网页位于同一目录中,而不是位于 C: 中。您可以授予 C:\ 权限并将您的代码更改为

var dir = @"C:\ProductsCookieData.xml";

有时,可以将文件复制到您的应用程序文件夹、根目录或特殊文件夹,并使用 Server.MapPath 访问

var dir = Server.MapPath("~/ProductsCookieData.xml");

【讨论】:

  • 不,server.mappath 没有找到它。不知道该怎么办。两个小时出现此错误:(
  • 如果不在您的 Web 应用程序文件夹层次结构中,Server.MapPath 将找不到它。它不会超出您的 Web 应用程序目录
  • 我把它放在任何地方,在app文件夹里面,外面等等。
  • 我取出File.Exist(),使用Server.MapPath,终于他找到了。谢谢大家
  • 将它放在您拥有web.config 的同一文件夹中,然后尝试var dir = Server.MapPath("~/ProductsCookieData.xml");。还要检查文件名,甚至从目录中复制名称
【解决方案2】:

您需要指定文件的完整路径。目前,您只提供了一个相对路径,该路径将相对于当前工作目录进行解析。

如果您的文件位于 C:\ 的根目录中,则将代码更改为:

string dir = @"C:\ProductsCookieData.xml";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多