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

当前上下文中不存在名称"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相关问答推荐

Razor中的共享本地化资源文件

如何格式化搜索字符串以从 Razor 页表中的多个列返回部分搜索字符串?

是否可以访问位于另一个项目中的 MVC 视图?

ASP.NET 平台是否有与 Heroku 等价的工具?

测试项目中的 App.config

RestSharp 获取请求的完整 URL

为什么默认情况下不允许 GET 请求返回 JSON?

无法从 App_code 文件夹中找到类型或命名空间

如何在 ASP.NET 应用程序中使用 jQuery 捕获提交事件?

如何在asp.net mvc的html.actionlink中调用javascript函数?

如何在 ASP.NET 中仅在调试模式下执行代码

MVC 3视图中的当前上下文中不存在名称'HTML'

在 asp.net 中将 JSON 转换为 .Net 对象时出错

Web.Config 中的 Assemblies node 的用途是什么?

对 ASP.NET 2.0 网页进行单元测试的最佳方法是什么?

ASP.NET MVC Url Route 支持(点)

InvalidOperationException:无法为角色创建 DbSet,因为此类型未包含在上下文模型中

如何获取部署在 Azure 网站上的 ASP.NET 5 应用程序的错误详细信息?

DateTime.Parse 和 Convert.ToDateTime 之间有什么区别?

使用 jQuery 从 asp:RadioButtonList 读取选定的值