当前位置: 代码迷 >> 综合 >> [转] ASPNET Core 中获取应用程序物理路径
  详细解决方案

[转] ASPNET Core 中获取应用程序物理路径

热度:30   发布时间:2023-12-14 20:33:39.0

如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示:

// Classic ASP.NETpublic class HomeController : Controller
{public ActionResult Index(){string physicalWebRootPath = Server.MapPath("~/");return Content(physicalWebRootPath);}
}

但是在ASPNET Core中不存在Server.MapPath()方法,Controller基类也没有Server属性。

 

 

在Asp.Net Core中取得物理路径:

从ASP.NET Core RC2开始,可以通过注入 IHostingEnvironment 服务对象来取得Web根目录和内容根目录的物理路径,如下所示:

 

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;namespace AspNetCorePathMapping
{public class HomeController : Controller{private readonly IHostingEnvironment _hostingEnvironment;public HomeController(IHostingEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;}public ActionResult Index(){string webRootPath = _hostingEnvironment.WebRootPath;string contentRootPath = _hostingEnvironment.ContentRootPath;return Content(webRootPath + "\n" + contentRootPath);}}
}

 

我在 ~/Code/AspNetCorePathMapping 目录下创建了一个示例 Asp.Net Core 应用程序,当我运行时,控制器将返回以下两个路径:

这里要注意区分Web根目录 和 内容根目录的区别:

Web根目录是指提供静态内容的根目录,即asp.net core应用程序根目录下的wwwroot目录

内容根目录是指应用程序的根目录,即asp.net core应用的应用程序根目录

 

 

ASP.NET Core RC1

在ASP.NET Core RC2之前 (就是ASP.NET Core RC1或更低版本),通过 IApplicationEnvironment.ApplicationBasePath 来获取 Asp.Net Core应用程序的根目录(物理路径) :

using Microsoft.AspNet.Mvc;
using Microsoft.Extensions.PlatformAbstractions;namespace AspNetCorePathMapping
{public class HomeController : Controller{private readonly IApplicationEnvironment _appEnvironment;public HomeController(IApplicationEnvironment appEnvironment){_appEnvironment = appEnvironment;}public ActionResult Index(){return Content(_appEnvironment.ApplicationBasePath);}}
}

 

原文地址(英文): https://blog.mariusschulz.com/2016/05/22/getting-the-web-root-path-and-the-content-root-path-in-asp-net-core

 

转载于:https://www.cnblogs.com/staneee/p/6843289.html

  相关解决方案