解釋 ASP.NET Core 中 HttpContext 類的作用


HttpContext 封裝了單個 HTTP 請求的所有 HTTP 特定資訊。

當 HTTP 請求到達伺服器時,伺服器會處理該請求並構建一個 HttpContext 物件。此物件表示您的應用程式程式碼可用於建立響應的請求。

由 ASP.NET Core Web 伺服器構建的 HttpContext 物件充當單個請求的容器。它儲存請求和響應資訊,例如請求的屬性、與請求相關的服務以及任何來自請求的資料或錯誤(如果存在)。

ASP.NET Core 應用程式透過 IHttpContextAccessor 介面訪問 HTTPContext。HttpContextAccessor 類實現了它。當您需要在服務中訪問 HttpContext 時,可以使用此類。

訪問 HttpContext 的不同方法

以下是從各種型別的應用程式訪問 HttpContext 的不同方法。

從控制器

public class HomeController : Controller{
   public IActionResult About(){
      var pathBase = HttpContext.Request.PathBase;

      ...

      return View();
   }
}

從 Razor Pages

public class AboutModel : PageModel{
   public string Message { get; set; }

   public void OnGet(){
      Message = HttpContext.Request.PathBase;
   }
}

從 Razor 檢視

@{
   var username = Context.User.Identity.Name;

   ...
}
From middleware
public class MyCustomMiddleware{
   public Task InvokeAsync(HttpContext context){
      ...
   }
}

HttpContext 上有用的屬性和方法

以下是 HttpContext 物件上一些有用的屬性和方法。

屬性

  • Connection:獲取有關此請求的基礎網路連線的資訊。
  • Request:獲取此請求的 HttpRequest 物件。
  • Response:獲取此請求的 HttpResponse 物件。
  • Session:獲取或設定用於管理此請求的使用者會話資料的物件。

方法

  • Abort():中止請求的基礎連線。

在 ASP.NET Core 中,Kestrel Web 伺服器接收 HTTP 請求並構建請求的 C# 表示形式,即 HttpContext 物件。但是,Kestrel 本身不會生成響應,而是將 HttpContext 物件轉發到 ASP.NET Core 應用程式中的中介軟體管道。中介軟體是一系列處理傳入請求並執行各種操作(例如身份驗證、快取、日誌記錄等)的元件。

更新於:2021年6月22日

7K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告