не удается найти ошибку XML-пути - PullRequest
1 голос
/ 11 апреля 2009

Я даже глупо задавать этот вопрос, Но я сидел как час, пытаясь понять, как решить проблему. В настоящее время я делаю проект, который использует ASP.NET и XML, для своего проекта я создал новый веб-сайт из Visual Studio и пытаюсь сохранить свои XML-файлы в App_Data.

Однако, когда я пытаюсь использовать код:

var topic = from t in XElement.Load("App_Data/topics.xml").Elements("topics")
                    select new
                    {
                        topic_id = t.Attribute("id"),
                        topic_subject = t.Element("topicname"),
                        topic_short_body = t.Element("topicshortbody")
                    };

Я получаю ошибку:

Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\App_Data\topics.xml'.

Source Error:

Line 23:     {
Line 24: 
Line 25:         var topic = from t in XElement.Load("App_Data/topics.xml").Elements("topics")
Line 26:                     select new
Line 27:                     {


Source File: d:\college\xml\xmlproject\Default.aspx.cs    Line: 25 

Я абсолютно уверен, что мой файл в App_Data. Поэтому у меня вопрос, есть ли другой способ указать путь, или как в моем случае было бы правильно указать путь?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2009

Так как это может быть полезно кому-то еще. Другое решение, которое я нашел

String xmlpath = Server.MapPath("App_Data/topics.xml");
3 голосов
/ 11 апреля 2009

Использовать Request.ApplicationPath

XElement.Load(Request.ApplicationPath + "/App_Data/topics.xml");

Это гарантирует, что вы пытаетесь загрузить файл в правильном месте, по умолчанию процесс выполняется в «c: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \» (отладочный веб-сервер) на на производственном сервере путь, скорее всего, будет находиться в C: \ windows \ system32 \ или там, где расположен процесс IIS.

Всегда делайте ваши пути абсолютными при работе с файлами в ASP.NET.

Вы также можете использовать System.IO.Path.Combine (Request.ApplicationPath, "App_Data / themes.xml"), чтобы убедиться, что ваш конкат строки "правильный".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...