Веб-приложение ASP.NET не может найти мой файл XML, говорит, что его нет в папке IIS Express

В моем другом проекте есть класс, который загружает файл XML.xml для объекта XmlTextReader. Затем мой другой проект (веб-сайт) использует этот проект для загрузки XML-файла. Поэтому, когда я запускаю этот веб-сайт, он говорит, что не может найти файл XML.xml внутри C:\Program Files(x86)\IIS Express\XML.xml. Я не могу создать там новый файл и понятия не имею, как настроить этот веб-сайт, чтобы найти мой XML-файл из другого каталога. Я много пытался гуглить, но не нашел хороших ответов. Любые быстрые исправления или что-то в этом роде. Вот код в asp.net

protected void Page_Load(object sender, EventArgs e)
    {
        XMLObjectParser parseri = new XMLObjectParser("XML.xml");
        parseri.readFileAndSave();
        item = parseri.getItem(1);

И код внутри моего XMLObjectParser

public XMLObjectParser(string file)
    {
        xmlreader = new XmlTextReader(file);
        this.file = file;

    }

Спасибо


person Jon Koivula    schedule 28.11.2013    source источник
comment
Не забудьте использовать Server.MapPath для подготовки путей к файлам в веб-приложении. Кстати, немного вашего кода может очень помочь понять вашу проблему   -  person Steve    schedule 28.11.2013
comment
Можете ли вы привести пример, как использовать Server.MapPath и где я должен его разместить?   -  person Jon Koivula    schedule 28.11.2013
comment
Server.MapPath Используйте его при необходимо указать имя файла для вашего объекта XmlTextReader. Опять же, если вы добавите немного своего кода к вопросу выше (код, который пытается загрузить ваш файл для обработки), это может помочь написать полный ответ.   -  person Steve    schedule 28.11.2013
comment
Привет извините. Теперь я добавил код к моему вопросу   -  person Jon Koivula    schedule 28.11.2013


Ответы (1)


Ваш код пытается открыть файл без указания пути.
В этом случае результирующим расположением вашего файла является каталог запуска процесса IIS, а не папка внутри вашего веб-сайта.

Если вы хотите получить доступ к файлу в папке вашего веб-сайта, используйте Server.MapPath.
Как поясняется в документации, если не указать относительный путь, предполагается, что файл находится в той же папке, где находится ваша ASP-страница.

Итак, вы могли бы написать

 XMLObjectParser parseri = new XMLObjectParser(Server.MapPath("XML.xml"));

если ваш файл должен находиться в текущей папке относительно вызывающей страницы.
Вы можете указать любую папку внутри структуры папок вашего веб-сайта, используя что-то вроде этого

 XMLObjectParser parseri = new XMLObjectParser(Server.MapPath("/APP_DATA/XML.xml"));

Подробнее о Server.MapPath здесь

person Steve    schedule 28.11.2013