获取网站虚拟目录下的物理路径

最近做excell导出时,用的是模板的方法。其中有个就是要获取模板的位置。

我先是用

string path = HttpContext.Current.Server.MapPath("~") + @"test.xls";

这个获取到网站根目录下的test.xls文件,这个在VS2010里面直接运行测试和部署都是没有问题,但是如果部署在网站的虚拟目录下。就会报找不到test.xls的错误。因为这个模板操作是需要实际的物理路径,最后用以下代码解决问题。

        /// <summary>
        /// 应用程序路径 如:/WWW/ 或 /
        /// </summary>
        public static string ApplicationPath
        {
            get
            {
                string path = HttpContext.Current.Request.ApplicationPath.ToString();
                if (path.Trim() != "/") // 判断路径是否为“/”
                {
                    path += "/";
                }
                return path;
            }
        }
string path = HttpContext.Current.Server.MapPath(ApplicationPath) + @"test.xls";

-------------------------------  以下百度参考--------------------------

     //返回与Web服务器上的指定虚拟路径相对应的物理文件路径。

      string Server.MapPath(string path)

测试,以下的代码在http://localhost/EnglishClub/manage/WebForm1.aspx页面

  Server.MapPath(Request.ServerVariables["PATH_INFO"])
  Server.MapPath("/")
  Server.MapPath("")
  Server.MapPath(".")
  Server.MapPath("../")
  Server.MapPath("..") 
    Page.Request.ApplicationPath
   (HttpContext.Current.Request.PhysicalApplicationPath);  


    运行结果:

   C:\Inetpub\wwwroot\EnglishClub\manage\WebForm1.aspx
  C:\Inetpub\wwwroot\
  C:\Inetpub\wwwroot\EnglishClub\manage
  C:\Inetpub\wwwroot\EnglishClub\manage
  C:\Inetpub\wwwroot\EnglishClub\
  C:\Inetpub\wwwroot\EnglishClub
  C:\Inetpub\wwwroot\EnglishClub\


  由以上可以知道:
要想获得要是建立的虚拟目录的网站的根目录可以这样使用:

Server.MapPath(Page.Request.ApplicationPath)



 

 .net高级学习群II  Q群230160592 欢迎有基础的加入一起学习

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值