我无法使用
获取Application_Start中的当前物理路径HttpContext.Current.Request.PhysicalApplicationPath
因为当时没有请求对象。
我还能如何获得物理路径?
答案 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()
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"