asp.net的app_code中的相对文件路径

时间:2011-08-06 09:14:31

标签: asp.net relative-path app-code

在我的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 个答案:

答案 0 :(得分:12)

使用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); 
    }
}

答案 1 :(得分:4)

尝试

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

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