简介:
1.Server.MapPath 所获得的路径都是服务器上的物理路径,也就是常说的绝对路径。
2.全名: System.Web.HttpContext.Current.Server.MapPath
注意点:
1、Server.MapPath("/") :获得应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\。
2、Server.MapPath("./") : 获得所在页面的当前目录,等价于 Server.MapPath("")。
3、Server.MapPath("../") : 获得所在页面的上级目录。
4、 Server.MapPath("~/") : 获得当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置,如C:\Inetpub\wwwroot\Example\。
问题
如果你从Page类(创建.aspx的Page页时代码文件.aspx.cs)继承的类中执行这条语句,才可以简单地使用 DataBase = Server.MapPath("data.mdb"); 否 则写全命名空间:System.Web.HttpContext.Current.Server.MapPath();
注意:如果是在一个类库下 的一个类中、要先添加引入(在bin目录右键,添加引用)using System.Web;因为新建一个类库时默认是不引入using (通过Server.MapPath()可以获取文件的绝对路径。)
如果你从Page类继承[ji cheng]的类中执行[zhi hang]这条语句[yu ju],才可以简单地使用
DataBase = Server.MapPath("data.mdb");
否则写全命名空间[kong jian][ming ming kong jian]:System.Web.HttpContext.Current.Server.MapPath();
注意:如果是在一个类库[lei ku]下的一个类中、要先添加引入using System.Web;因为新建一个类库[lei ku]时默认[mo ren]是不引入using System.Web的!
主要总结Server.MapPath 这个方法的使用以及使用的场景,不是什么时候都适合使用;
1、实现功能:
Server.MapPath能够获取指定URL相对服务器的物理路径,在IIS服务端,能够根据文件名来获取该文件的物理路径;
2、存在命令空间:
System.Web.HttpContext.Current.Server.MapPath 以及System.web.MVC.Control.Server.Mapth;
3、使用情况:
既然是System.Web.HttpContent 也及时表明该方法只能放在Http.web中使用,非该环境系统会扔出一个错误;非web环境是什么意思那,举个例子,我们使用线程来处理某个业务逻辑的时候,这个时候你使用该方法,那必然报错,以为你已经脱离了web环境。所以视情况而定;获取虚拟目录的物理地址,该方法很有效果;
随便补充一句,多线程编程的时候,一定要分清楚那些事线程能够获取的资源,那些事依赖其他环境获取的变量,比如IIS中多线程获取缓存数据,离开了HttpWeb这环境来获取IIS的缓存,必然是失败的,所以要分清楚多线程编程时候,使用的资源对象。线程安全对象集合:ConcurrentQueue、ConcurrentBag等
4、需要注意事项:
system.Web.HttpContext.Current.Server.MapPath("myPic") 也就是获取当前平级目录地址;
system.Web.HttpContext.Current.Server.MapPath("../myPic") 也就是获取当前上级目录地址;
使用的时候需要慎重;
5、同类使用注意:
HttpContext.Current.Cache.Add(CacheKey, DataDirectory, null, DateTime.MaxValue, TimeSpan.FromMinutes(15), CacheItemPriority.NotRemovable, new CacheItemRemovedCallback(CacheItemRemovedCallback));public static void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason) { /****S测试压力代码 数据请求*****/ Dictionary<string, int> DataDic = (Dictionary<string, int>)value; string ResultText = ""; foreach (var currkey in DataDic) { ResultText += currkey.Key + "=" + currkey.Value+"$"; } LogFun.Instance().WriteLog(key, ResultText.Trim('$'),false); /****E测试压力代码 数据请求*****/ }
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛