относительный путь к файлу в коде приложения asp.net - PullRequest
6 голосов
/ 06 августа 2011

В моем приложении asp.net у меня есть класс util, который будет считывать некоторые данные из файла xml, затем я могу вызвать этот класс позже, файл должен быть загружен один раз, поэтому я использую статический конструктор.

class UtilHelper{
  static UtilHelper(){
    XmlDocument doc=new XmlDocument();
    doc.load("a.xml"); //here the asp.net cannot find the file,it always try to find file in the iis's dictionary.
  }
}

Некоторые люди могут предложить мне использовать «Server.mappath (xxx)»

Но этот класс не является xx.aspx.cs. Таким образом, в контексте нет ни «HttpRequest», ни «HttpServerUtilly».

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 06 августа 2011

Использование HttpContext.Current.Server.MapPath.

class UtilHelper
{
    static UtilHelper()
    {
        XmlDocument doc = new XmlDocument();
        string fileName = HttpContext.Current.Server.MapPath("~/App_Code/a.xml");
        doc.load(fileName); 
    }
}
4 голосов
/ 06 августа 2011

попробуй

var path = Path.Combine(
    HostingEnvironment.ApplicationPhysicalPath, 
    "App_Code\\a.xml"
);

http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.applicationphysicalpath.aspx

...