.NET Core 中 "Request" class/object 的替代方法是什么?

What is the alternate way for "Request" class/object in .NET core?

我正在将现有的 ASP.NET Web API 2 项目迁移到 ASP.NET Core。迁移时我找不到 this.Request 对象。谁能帮我解决这个问题?

您需要像这样覆盖您的 class 以获得 this.Request

public partial class _Default : System.Web.UI.Page

有人问过这个问题 ,但由于 ASP.NET Core 当时可能仍处于 RC 状态,我想我应该在这里回答而不是参考那里,因为有些东西是已过时或完全从正式版本中删除。

假设您的控制器 class 继承自 Controller(或更具体地说,ControllerBase),那么它 有一个 this.Request 属性如你所见here and here。正如 Pawel 指出的那样,您还可以从 this.HttpContext 属性.

访问它

请求的 URL 在 HttpRequest 上被分解为几个属性。您可以通过添加 using Microsoft.AspNetCore.Http.Extensions; 在更友好的 API 中访问 URL,这使您可以访问以下扩展方法:

  • GetDisplayUrl()
  • GetEncodedUrl()

就查询字符串而言,HttpRequest 提供 QueryStringQuery 属性供您交互。

旁注:我刚刚在这台笔记本电脑上首次针对 .NET Core 上的 ASP.NET Core 创建了一个应用程序,Intellisense 需要一段时间才能为 Request 属性,所以我想知道这是否是您的问题。