非Web程序获取路径几种方法如下:
1.AppDomain.CurrentDomain.BaseDirectory
2.Environment.CurrentDirectory
3.HttpRuntime.BinDirectory The path to the current application's/bin directory;
Web程序
HttpCurrent.Context.Server.Mappath()
HttpContext.Current返回当前请求的 HttpContext 对象。如此我们就可以直接访问Request、Response、Session、Application等对象,和Page中访问等同。 我们无需再将Page用参数的方式传递到我们的类库对象中。
HttpRuntime 为当前应用程序提供一组 ASP.NET 运行时服务。我们可以通过这个类获得当前ASP.NET工程的一些信息。 HttpRuntime.AppDomainAppVirtualPath : 项目虚拟路径 HttpRuntime.AppDomainAppPath : 项目物理路径 HttpRuntime.BinDirectory : BIN目录物理路径 HttpRuntime.ClrInstallDirectory : CLR安装路径(可以用来获取CLR版本号)
输出: AppDomainAppId: /LM/W3SVC/1/Root/Learn.Test.Web AppDomainAppPath: D:SystemMy DocumentsVisual Studio ProjectsLearn.TestLearn.Test.Web AppDomainAppVirtualPath: /Learn.Test.Web AppDomainId: /LM/W3SVC/1/Root/Learn.Test.Web-9-127652564154400560 AspInstallDirectory: C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 BinDirectory: D:SystemMy DocumentsVisual Studio ProjectsLearn.TestLearn.Test.Webin ClrInstallDirectory: c:windowsmicrosoft.netframeworkv1.1.4322 CodegenDir: C:WINDOWSMicrosoft.NETFrameworkv1.1.4322Temporary ASP.NET Fileslearn.test.web416801327c880883 IsOnUNCShare: False MachineConfigurationDirectory: c:windowsmicrosoft.netframeworkv1.1.4322Config
HostingEnvironment
灵活运用技巧:
当使用非WEB程序或使用异步调用时,想要取得根目录下的某目录可以使用如下代码:
HttpRuntime.BinDirectory + "../目录名";
获取网站根目录的方法有几种如:
Server.MapPath(Request.ServerVariables["PATH_INFO"]) Server.MapPath("/") Server.MapPath("") Server.MapPath(".") Server.MapPath("../") Server.MapPath("..") Page.Request.ApplicationPath 运行结果: C:InetpubwwwrootEnglishClubmanageWebForm1.aspx C:Inetpubwwwroot C:InetpubwwwrootEnglishClubmanage C:InetpubwwwrootEnglishClubmanage C:InetpubwwwrootEnglishClub C:InetpubwwwrootEnglishClub
以上的方法可以在.aspx中访问,但是如果你在。cs文件就不能用。
HttpContext.Current.Server.MapPath(); System.Web.HttpContext.Current.Request.PhysicalApplicationPath
在.cs文件中可以用。
但是HttpContext.Current.Server.MapPath();这个获取的是文件的路径而不是根目录。
只有System.Web.HttpContext.Current.Request.PhysicalApplicationPath 这个才是获取的根目录,在写获取数据库路径是应该用这个,其他的都有问题。
测试过,在有些web项目的cs文件中可以这样用。但是最好是用System.Web.HttpContext.Current.Server.MapPath("/SystemManage/Hotel/LocList.xml");
在类库项目中,这个通常是不能用的,这个时候需要引用程序集,引用命名空间System.Web;才行。
System.Environment.CurrentDirectory + @"IPMS.WebaboutMe.txt"