获取Application_Start中的当前应用程序物理路径

时间:2009-09-29 23:50:46

标签: c# asp.net

我无法使用

获取Application_Start中的当前物理路径
HttpContext.Current.Request.PhysicalApplicationPath

因为当时没有请求对象。

我还能如何获得物理路径?

10 个答案:

答案 0 :(得分:45)

 protected void Application_Start(object sender, EventArgs e)
 {
     string path = Server.MapPath("/");
     //or 
     string path2 = Server.MapPath("~");
     //depends on your application needs

 }

答案 1 :(得分:23)

您也可以使用

HttpRuntime.AppDomainAppVirtualPath

答案 2 :(得分:22)

我使用ASP.Net WebForms创建了一个网站,您可以在其中查看使用Azure中某个站点的先前响应中提到的所有表单的结果。

http://wfserverpaths.azurewebsites.net/

要点:

Server.MapPath("/") => D:\home\site\wwwroot\
Server.MapPath("~") => D:\home\site\wwwroot\
HttpRuntime.AppDomainAppPath => D:\home\site\wwwroot\
HttpRuntime.AppDomainAppVirtualPath => /
AppDomain.CurrentDomain.BaseDirectory => D:\home\site\wwwroot\
HostingEnvironment.MapPath("/") => D:\home\site\wwwroot\
HostingEnvironment.MapPath("~") => D:\home\site\wwwroot\

答案 3 :(得分:16)

答案 4 :(得分:9)

您可以使用此代码:

AppDomain.CurrentDomain.BaseDirectory

答案 5 :(得分:3)

使用下面的代码

asp.net中的

server.mappath()

c #windows应用程序中的

application.startuppath

答案 6 :(得分:3)

还有静电     HostingEnvironment.MapPath

答案 7 :(得分:2)

System.AppDomain.CurrentDomain.BaseDirectory

这将为您提供应用程序的运行目录。这甚至适用于Web应用程序。之后,您可以访问您的文件。

答案 8 :(得分:2)

最佳选择是使用

AppDomain.CurrentDomain.BaseDirectory

因为它位于系统命名空间中,并且没有依赖 system.web

这样您的代码将更加便携

答案 9 :(得分:1)

然而,所有这些选项之间存在细微差别

我发现了

如果你这样做

    string URL = Server.MapPath("~");

    string URL = Server.MapPath("/");

    string URL = HttpRuntime.AppDomainAppPath;

您的网址会在您的链接中显示资源,如下所示:

    "file:///d:/InetPUB/HOME/Index/bin/Resources/HandlerDoc.htm"

但是如果您希望您的URL只显示虚拟路径而不是资源位置,那么您应该

    string URL = HttpRuntime.AppDomainAppVirtualPath; 

然后,您的网址正在显示资源的虚拟路径,如下所示

    "http://HOME/Index/bin/Resources/HandlerDoc.htm"