在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
专业开发:
气象软件、监狱网上购物系统、两法衔接平台