91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HttpContext如何在ASP.NET Core5.0項目中進行訪問

發布時間:2020-12-11 14:56:09 來源:億速云 閱讀:423 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關HttpContext如何在ASP.NET Core5.0項目中進行訪問,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

ASP.NET Core 應用通過 IHttpContextAccessor 接口及其默認實現 HttpContextAccessor 訪問 HttpContext。 只有在需要訪問服務內的 HttpContext 時,才有必要使用 IHttpContextAccessor。

通過 Razor Pages 使用 HttpContext

Razor Pages PageModel 公開 HttpContext 屬性:

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


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

通過 Razor 視圖使用 HttpContext

Razor 視圖通過視圖上的 RazorPage.Context 屬性直接公開 HttpContext。 下面的示例使用 Windows 身份驗證檢索 Intranet 應用中的當前用戶名:

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

通過控制器使用 HttpContext

控制器公開 ControllerBase.HttpContext 屬性:

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


    ...


    return View();
  }
}

通過中間件使用 HttpContext

使用自定義中間件組件時,HttpContext 傳遞到 Invoke 或 InvokeAsync 方法,在中間件配置后可供訪問:

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

通過自定義組件使用 HttpContext

對于需要訪問 HttpContext 的其他框架和自定義組件,建議使用內置的依賴項注入容器來注冊依賴項。 依賴項注入容器向任意類提供 IHttpContextAccessor,以供類在自己的構造函數中將它聲明為依賴項:

public void ConfigureServices(IServiceCollection services)
{
   services.AddControllersWithViews();
   services.AddHttpContextAccessor();
   services.AddTransient<IUserRepository, UserRepository>();
}

如下示例中:

  • UserRepository 聲明自己對 IHttpContextAccessor 的依賴。

  • 當依賴項注入容器解析依賴鏈并創建 UserRepository 實例時,就會注入依賴 項。

public class UserRepository : IUserRepository
{
  private readonly IHttpContextAccessor _httpContextAccessor;


  public UserRepository(IHttpContextAccessor httpContextAccessor)
  {
    _httpContextAccessor = httpContextAccessor;
  }


  public void LogCurrentUser()
  {
    var username = _httpContextAccessor.HttpContext.User.Identity.Name;
    service.LogAccessRequest(username);
  }
}

從后臺線程訪問 HttpContext

HttpContext 不是線程安全型。 在處理請求之外讀取或寫入 HttpContext 的屬性可能會導致 NullReferenceException。

要使用 HttpContext 數據安全地執行后臺工作,請執行以下操作:

  • 在請求處理過程中復制所需的數據。

  • 將復制的數據傳遞給后臺任務。

要避免不安全代碼,請勿將 HttpContext 傳遞給執行后臺工作的方法。 而是傳遞所需要的數據。 在以下示例中,調用 SendEmailCore,開始發送電子郵件。 將 correlationId 傳遞到 SendEmailCore,而不是 HttpContext。 代碼執行不會等待 SendEmailCore 完成:

public class EmailController : Controller
{
  public IActionResult SendEmail(string email)
  {
    var correlationId = HttpContext.Request.Headers["x-correlation-id"].ToString();


    _ = SendEmailCore(correlationId);


    return View();
  }


  private async Task SendEmailCore(string correlationId)
  {
    ...
  }
}

看完上述內容,你們對HttpContext如何在ASP.NET Core5.0項目中進行訪問有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

农安县| 义乌市| 大丰市| 铜川市| 靖西县| 英德市| 郯城县| 乌鲁木齐市| 娱乐| 潮州市| 宁夏| 南宁市| 太原市| 汝南县| 揭阳市| 桂平市| 安岳县| 衡水市| 乌拉特前旗| 临高县| 突泉县| 都兰县| 潼关县| 岳阳县| 建始县| 乌拉特中旗| 宁安市| 宁蒗| 宜州市| 宁津县| 华阴市| 贺兰县| 云安县| 遵化市| 平塘县| 哈尔滨市| 若羌县| 时尚| 蒙山县| 延川县| 肃北|