Dav*_*vid 12 asp.net relative-path
当我的ASP.NET站点使用文档(例如XML)时,我通常按如下方式加载文档:
Server.MapPath("~\Documents\MyDocument.xml")
Run Code Online (Sandbox Code Playgroud)
但是,我想将Documents文件夹移出网站文件夹,以便它现在是网站文件夹的兄弟.这将使文档维护变得更加容易.
但是,重写文档加载代码如下:
Server.MapPath("../../Documents/MyDocument.xml")
Run Code Online (Sandbox Code Playgroud)
导致ASP.NET抱怨它无法"退出顶级目录".
那么有人可以建议我如何相对指定网站文件夹之外的文件夹的位置?我真的不想为明显的部署原因指定绝对路径.
谢谢
大卫
Chr*_*ris 27
如果您知道它相对于您的Web根目录的位置,您可以使用Server.MapPath获取Web根目录的物理位置,然后使用Path类的方法来获取文档路径.
粗略的未经检查的代码类似于:
webRootPath = Server.MapPath("~")
docPath = Path.GetFullPath(Path.Combine(rootPath, "../Documents/MyDocument.xml"))
Run Code Online (Sandbox Code Playgroud)
很抱歉,如果我的语法错误,但Path该类应该是您使用真正的FS路径而不是Web类型路径.
您的方法失败的原因是Server.MapPath在Web服务器上占用一个位置,而您提供的位置无效,因为它位于服务器层次结构根目录的顶部.
docPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\Documents\MyDocument.xml");
Run Code Online (Sandbox Code Playgroud)
AppDomain.BaseDirectory返回当前Web应用程序程序集目录路径.
| 归档时间: |
|
| 查看次数: |
56072 次 |
| 最近记录: |