您现在的位置: 365建站网 > 365学习 > C#中Server.MapPath的用法和实例

C#中Server.MapPath的用法和实例

文章来源:365jz.com     点击数:146    更新时间:2018-06-10 10:44   参与评论

简介:

    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测试压力代码 数据请求*****/
        }


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (146人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------