我想把这行代码复制到我的控制器中,但编译器抱怨说

当前上下文中不存在名称"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; }
  }
}

Asp.net相关问答推荐

ASP.NET MVC项目中的产品采购并发性测试

Swashbuckle 通过 .NET 应用程序中的 XML 注释使用格式标识符

.net 中的 [] 括号是什么?

如何在 ASP.NET 中设置自动实现属性的默认值

MSCharts找不到请求类型'GET'的http处理程序错误

如何使用特定视图(不是控制器名称)返回 ActionResult

为什么 ASP.NET Identity 2.0 使用 GUID/字符串作为用户 ID?

在 Asp.net 中通过 Button 的 CommandArgument 传递多个参数

用于 ASP.NET 的 System.Drawing 的替代品?

asp.net mvc 中的 RedirectToAction 用法

什么相当于 ASP.NET 中的 cron 作业(job)?

FluentValidation 使用数据库的唯一名称验证

相当于服务器端的 ASP.NET 包括

如何将 css 类添加到 ASP.Net 中的更新面板?

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

会话变量保存在哪里?

ASP.NET 中的多选下拉列表

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

根据 DropDownList 的值动态启用或禁用RequiredFieldValidator

在 ASP.NET 中使用 SecureString 有什么好处吗?