首页 > 学院 > 开发设计 > 正文

转:Server.MapPath相关

2019-11-17 02:51:31
字体:
来源:转载
供稿:网友

转:Server.MapPath相关

如果你从Page类继承的类中执行这条语句,才可以简单地使用DataBase = Server.MapPath("data.mdb");否则写全命名空间:System.Web.HttpContext.Current.Server.MapPath();

总注:Server.MapPath获得的路径都是服务器上的物理路径,也就是常说的绝对路径1、Server.MapPath("/")注:获得应用程序根目录所在的位置,如 C:/Inetpub/wwwroot/。2、Server.MapPath("./")注:获得所在页面的当前目录,等价于Server.MapPath("")。3、Server.MapPath("../")注:获得所在页面的上级目录。4、Server.MapPath("~/")注:获得当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置,如C:/Inetpub/wwwroot/Example/。

在多线程里面使用HttpContext.Current,HttpContext.Current是得到null的.所以在线程调用方法,方法中类里面的System.Web.HttpContext.Current.Server.MapPath() 获取不到对象。

应该这样用:

public static string MapPath(string strPath) { if (HttpContext.Current != null) { return HttpContext.Current.Server.MapPath(strPath); } else //非web程序引用 { strPath = strPath.Replace("/", "//"); if (strPath.StartsWith("//")) { //strPath = strPath.Substring(strPath.IndexOf('//', 1)).TrimStart('//'); strPath = strPath.TrimStart('//'); } return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath); } }

http://blog.csdn.net/lego2816/article/details/6781677


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表