Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取ASP.NET服务器应用程序的根目录?_Asp.net - Fatal编程技术网

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

如何获取ASP.NET服务器应用程序的根目录?,asp.net,Asp.net,在ASP.NET应用程序的启动代码(即无请求)中,我需要获取应用程序根目录的路径。我需要这个来打开根目录下文件夹中的文件 我怎么能得到这个 Server.MapPath("~"); 将获取当前应用程序的根目录,作为磁盘上的路径。例如,C:\inetpub\… 请注意,~字符也可以用作ASP.NET控件中web路径的一部分,它将填充应用程序的URL 如果您的类没有服务器属性,则可以使用静态 HttpContext.Current.Server.MapPath("~") 如果没有可用的Http

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

我怎么能得到这个

Server.MapPath("~"); 
将获取当前应用程序的根目录,作为磁盘上的路径。例如,
C:\inetpub\…

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

如果您的类没有服务器属性,则可以使用静态

HttpContext.Current.Server.MapPath("~")
如果没有可用的
HttpContext
,则此选项非常有用

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

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

您可以从Server.MapPath方法获取此信息

以下是MSDN链接: 另一种可能性是

其他一些方法:

当您无法使用HttpContext获取服务器对象时,此方法非常有用。此方法返回了我要查找的内容:在IIS中运行的应用程序的根URL。Server.MapPath返回文件目录。为提高效率,请将其更改为静态变量:
private static string DataFilePath=HttpRuntime.AppDomainAppVirtualPath!=无效的Combine(HttpRuntime.AppDomainAppPath,“App_Data”):Path.GetDirectoryName(Assembly.getExecutionGassembly().Location)这导致出现所述的
NullReferenceException
。我认为
HttpRuntime.AppDomainAppPath
更适合根据和(阅读评论并转到)。仅供参考,“获取路径的不同方式”链接()已断开。