当我的ASP.NET网站使用文档(例如
XML)时,我通常会如下载入文档:
Server.MapPath("~\Documents\MyDocument.xml")
但是,我想将Documents文件夹移出网站文件夹,以便它现在是网站文件夹的兄弟.这将使维护文档更容易.
但是,重写文档加载代码如下:
Server.MapPath("../../Documents/MyDocument.xml")
导致ASP.NET的投诉,它不能“退出顶级目录”.
所以任何人都可以建议如何在网站文件夹外相对指定文件夹的位置?由于明显的部署原因,我真的不想指定绝对路径.
谢谢
大卫
解决方法
如果您知道相对于您的Web根目录,可以使用Server.Mappath获取Web根目录的文本位置,然后在路径(
http://msdn.microsoft.com/en-us/library/system.io.path_methods.aspx)上获取路径的方法.
在粗略的未经检查的代码如:
webRootPath = Server.MapPath("~") docPath = Path.GetFullPath(Path.Combine(rootPath,"../Documents/MyDocument.xml"))
对不起,如果我得到了语法错误,但Path类应该是你以后玩真正的FS路径而不是Web类型路径.
您的方法失败的原因是Server.MapPath在您的Web服务器上存在一个位置,因为它位于服务器层次结构根目录的顶部,因此您所提供的位置无效.