最近做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 欢迎有基础的加入一起学习