Уеб приложението ASP.NET не може да намери моя XML файл, казват, че не е в папката IIS Express

Имам в друг проект клас, който зарежда XML.xml файл за обект XmlTextReader. След това моят друг проект (уебсайт) използва този проект за зареждане на xml файл. Така че, когато стартирам този уебсайт, той казва, че не може да намери XML.xml файл в C:\Program Files(x86)\IIS Express\XML.xml. Не мога да създам нов файл там и нямам абсолютна идея как да конфигурирам този уебсайт да намира моя XML файл от друга директория. Опитах се много да търся в Google, но не можах да намеря добри отговори. Някакви бързи поправки или нещо подобно. Ето кода в 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