【发布时间】:2008-10-25 09:39:51
【问题描述】:
我正在使用 System.IO.Directory.GetCurrentDirectory() 来获取我的 Web 服务中的当前目录,但这并没有给我当前目录。如何在 Web 服务中获取当前目录?
谢谢 斯图尔特
【问题讨论】:
-
您在哪里托管 Web 服务? IIS?你在使用 WCF
标签: c# web-services
我正在使用 System.IO.Directory.GetCurrentDirectory() 来获取我的 Web 服务中的当前目录,但这并没有给我当前目录。如何在 Web 服务中获取当前目录?
谢谢 斯图尔特
【问题讨论】:
标签: c# web-services
在 web 服务中,您在 http 上下文中运行。所以,
HttpContext.Current.Server.MapPath("~/")
会给你答案。
【讨论】:
你可以使用
AppDomain.CurrentDomain.BaseDirectory;
这为您提供了应用程序的根目录。
【讨论】:
HttpContext.Current.Server.MapPath(".") 会给你当前的工作目录。
但对于 Rohan West 关于可能在 HttpContext 之外的评论,最好直接调用:
HostingEnvironment.MapPath(".")
查看详情here
【讨论】:
HttpContext.Current.Server.MapPath("~/") 映射回应用程序或虚拟目录的根目录。
HttpContext.Current.Server.MapPath("~/") HttpContext.Current.Server.MapPath(".") HttpContext.Current.Server.MapPath("..")
以上都是相对的,所以你可以任意组合遍历目录树。
【讨论】:
【讨论】:
HttpContext.Current.Server.MapPath("~/") 会让您获得应用程序的根目录吗?
这很可能,因为您可能知道从那里开始的路径。
另一个可能感兴趣的选项:
HttpContext.Current.Server.MapPath("/Directory/")
无论如何,这都是从应用程序的根目录构建的。
如果没有第一个斜线,这将从您调用的目录开始:
HttpContext.Current.Server.MapPath("Directory/")
【讨论】:
HttpContext.Current.Server.MapPath("..") [观察两个(..)点而不是(.)] 给出站点的虚拟目录的物理目录!
【讨论】: