如何获取ASP.NET服务器应用程序的根目录?

Dav*_*len 47 asp.net

在我的ASP.NET应用程序的启动代码(即没有请求)中,我需要获取应用程序根目录的路径.我需要这个打开我在根目录下的文件夹中的文件.

我怎么能得到这个?

deb*_*cey 72

Server.MapPath("~"); 
Run Code Online (Sandbox Code Playgroud)

将获取当前应用程序的根目录,作为磁盘上的路径.例如,C:\inetpub\...

请注意,该~字符也可以用作ASP.NET控件中Web路径的一部分,它将填充应用程序的URL.

如果您的类没有Server属性,则可以使用static

HttpContext.Current.Server.MapPath("~")
Run Code Online (Sandbox Code Playgroud)

  • 这导致了“NullReferenceException”,如[此处](/sf/ask/480295791/)所述。我认为 `HttpRuntime.AppDomainAppPath` 更可取,根据[此处](/sf/answers/480301601/)和[此处](/sf/answers/248481061/)(阅读评论并转到[链接](/sf/ask/211818911/))。 (3认同)

Chr*_*ter 38

如果您没有HttpContext可用的HttpRuntime.AppDomainAppPath非常有用.

例如,一个低级库方法来获取相对于当前应用程序的路径,并且无论它是否是Web应用程序,它都必须工作:

private static string GetDataFilePath() => HttpRuntime.AppDomainAppVirtualPath != null ?
    Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data") :
    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

  • 当您无法使用HttpContext获取Server对象时,这非常有用 (3认同)
  • 此方法返回了我要查找的内容:我的应用程序在IIS中运行的根URL.Server.MapPath返回一个文件目录. (2认同)

小智 6

另一种可能性是 AppDomain.CurrentDomain.BaseDirectory

一些额外的方式: 获取路径的不同方式


归档时间:

查看次数:

76770 次

最近记录:

7 年,2 月 前