在WCF中调用Server.MapPath 获取服务发布目录路径
昨晚编写WCF服务时因为一个小问题搞了很晚才解决。
在WCF中想使用Server.Map获取当前服务发布目录的绝对路径。可是在调试时却发现:
“System.Web.HttpContext.Current.Server.MapPath("..." + filename);”
这个语句中的HttpContext总是为null,到网上翻了好久才了解:
“当没有开启ASP.NET相容模式时(aspNetCompatibilityEnabled="true"),WCF不支持HttpContext, HttpApplication,大部分文章都建议修改<serviceHostingEnvironment aspNetCompatibilityEnabled="true">使WCF可使用ASP.NET传统做法。”
最后有两种解决方法:
string t1 = System.Web.HttpContext.Current.Server.MapPath("~");//以上写法在WCF未开aspNetCompatibilityEnabled时, //会因HttpContext.Current == null发生错误
string t2 = System.Web.Hosting.HostingEnvironment.MapPath("~");
//以上写法在WCF中使用没有问题
使用方法如:
System.IO.File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~\\IsoLineFile\\IsoLineFiles.txt"));
希望以上记录能对大家有所帮助。
sucsy 2011-9-23
公司网站:
http://www.codersoft.cn
专业开发:
气象软件、监狱网上购物系统、两法衔接平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步