如何获取ASP.NET服务器应用程序的根目录?
在ASP.NET应用程序的启动代码(即无请求)中,我需要获取应用程序根目录的路径。我需要这个来打开根目录下文件夹中的文件 我怎么能得到这个如何获取ASP.NET服务器应用程序的根目录?,asp.net,Asp.net,在ASP.NET应用程序的启动代码(即无请求)中,我需要获取应用程序根目录的路径。我需要这个来打开根目录下文件夹中的文件 我怎么能得到这个 Server.MapPath("~"); 将获取当前应用程序的根目录,作为磁盘上的路径。例如,C:\inetpub\… 请注意,~字符也可以用作ASP.NET控件中web路径的一部分,它将填充应用程序的URL 如果您的类没有服务器属性,则可以使用静态 HttpContext.Current.Server.MapPath("~") 如果没有可用的Http
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
更适合根据和(阅读评论并转到)。仅供参考,“获取路径的不同方式”链接()已断开。