Asp.net
ASP.NET Core 中的 Server.MapPath 等價物是什麼?
我在一些要復製到控制器中的程式碼中有這一行,但編譯器抱怨說
目前上下文中不存在名稱“伺服器”
var UploadPath = Server.MapPath("~/App_Data/uploads")如何在 ASP.NET Core 中實現等價物?
更新: IHostingEnvironment 已棄用。請參閱下面的更新。
在 Asp.NET Core 2.2 及更低版本中,託管環境已使用介面IHostingEnvironment進行了抽象
ContentRootPath屬性將使您能夠訪問應用程序內容文件的絕對路徑。
如果您想訪問 web-servable 根路徑(預設為 www 文件夾),您也可以使用屬性WebRootPath
您可以將此依賴項注入您的控制器並按如下方式訪問它:
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); } }更新 - .NET CORE 3.0 及更高版本
正如@ amir133所指出的,IHostingEnvironment 已被 .NET Core 3.0 標記為過時。您應該使用IWebHostEnvironment而不是IHostingEnvironment。請參閱下面的答案。
Microsoft 在這些介面之間巧妙地分離了主機環境屬性。請參考下面的介面定義:
namespace Microsoft.Extensions.Hosting { public interface IHostEnvironment { string EnvironmentName { get; set; } string ApplicationName { get; set; } string ContentRootPath { get; set; } IFileProvider ContentRootFileProvider { get; set; } } } namespace Microsoft.AspNetCore.Hosting { public interface IWebHostEnvironment : IHostEnvironment { string WebRootPath { get; set; } IFileProvider WebRootFileProvider { get; set; } } }