我想把这行代码复制到我的控制器中,但编译器抱怨说
当前上下文中不存在名称"Server"
var UploadPath = Server.MapPath("~/App_Data/uploads")
如何在ASP.NET Core中实现等效功能?
我想把这行代码复制到我的控制器中,但编译器抱怨说
当前上下文中不存在名称"Server"
var UploadPath = Server.MapPath("~/App_Data/uploads")
如何在ASP.NET Core中实现等效功能?
UPDATE: IHostingEnvironment is deprecated. See update below.
在Asp.NET Core 2.2及以下版本,托管环境已使用接口IHostingEnvironment抽象
ContentRootPath属性将允许您访问应用程序内容文件的绝对路径.
如果要访问Web可服务的根路径(默认情况下为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);
}
}
UPDATE - .NET CORE 3.0 and Above个
正如@amir133所指出的,IHostingEnvironment已经被.NET Core 3.0标记为过时.你应该用IWebHostEnvironment而不是IHostingEnvironment.请参阅答案below.
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; }
}
}