南京酷得软件-陈朕

在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
posted @ 2011-09-23 14:56  南京酷得软件-陈朕  阅读(2711)  评论(4编辑  收藏  举报
南京酷得软件-陈朕