Используйте Server.MapPath для загрузки внешних файлов

Я хочу загрузить файл XML, который находится на диске D:. Это то, что я использовал

doc.Load(System.Web.HttpContext.Current.Server.MapPath("/D:/Employee.xml"));

Но при попытке запустить программу выдает ошибку:

В экземпляре объекта не задана ссылка на объект.

Я где-то читал, что Server.MapPath можно использовать только для веб-страниц или веб-приложений. Я сделал форму в asp.net, используя C#.

Почему я получаю эту ошибку?

Это мой код:

 private void btnRead_Click(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("D:\\Employee.xml");
        XmlNode root = doc.DocumentElement;
        StringBuilder sb = new StringBuilder();
        XmlNodeList nodeList = root.SelectNodes("Employee");
        foreach (XmlNode node in nodeList)
        {
            sb.Append("Name: ");
            //Select the text from a single node, “Title” in this case
            sb.Append(node.SelectSingleNode("Name").InnerText);
            sb.Append("EmpID: ");
            sb.Append(node.SelectSingleNode("EmpID").InnerText);
            sb.Append("Dept: ");
            sb.Append(node.SelectSingleNode("Dept").InnerText);
            sb.Append("");
        }
        System.Web.HttpContext.Current.Response.Write(sb.ToString());
    }

Я сделал форму в VS 2008. Сохраненные детали в файле XML. А теперь хочу отобразить вывод.

2 ответа

Решение

Почему бы не загрузить напрямую:

doc.Load("D:\\Employee.xml");

В настольном приложении нет такого HttpContext.Current, поэтому вы получаете исключение NullReferenceException. Вместо этого используйте

doc.Load("D:/Employee.xml");
Другие вопросы по тегам