最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在ASP.NET Core5.0中訪問(wèn)HttpContext的方法步驟

 更新時(shí)間:2020年11月13日 08:35:22   作者:conan_lin  
這篇文章主要介紹了在ASP.NET Core5.0中訪問(wèn)HttpContext的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

ASP.NET Core 應(yīng)用通過(guò) IHttpContextAccessor 接口及其默認(rèn)實(shí)現(xiàn) HttpContextAccessor 訪問(wèn) HttpContext。 只有在需要訪問(wèn)服務(wù)內(nèi)的 HttpContext 時(shí),才有必要使用 IHttpContextAccessor。

通過(guò) Razor Pages 使用 HttpContext

Razor Pages PageModel 公開(kāi) HttpContext 屬性:

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


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

通過(guò) Razor 視圖使用 HttpContext

Razor 視圖通過(guò)視圖上的 RazorPage.Context 屬性直接公開(kāi) HttpContext。 下面的示例使用 Windows 身份驗(yàn)證檢索 Intranet 應(yīng)用中的當(dāng)前用戶(hù)名:

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

通過(guò)控制器使用 HttpContext

控制器公開(kāi) ControllerBase.HttpContext 屬性:

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


    ...


    return View();
  }
}

通過(guò)中間件使用 HttpContext

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

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

通過(guò)自定義組件使用 HttpContext

對(duì)于需要訪問(wèn) HttpContext 的其他框架和自定義組件,建議使用內(nèi)置的依賴(lài)項(xiàng)注入容器來(lái)注冊(cè)依賴(lài)項(xiàng)。 依賴(lài)項(xiàng)注入容器向任意類(lèi)提供 IHttpContextAccessor,以供類(lèi)在自己的構(gòu)造函數(shù)中將它聲明為依賴(lài)項(xiàng):

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

如下示例中:

  • UserRepository 聲明自己對(duì) IHttpContextAccessor 的依賴(lài)。
  • 當(dāng)依賴(lài)項(xiàng)注入容器解析依賴(lài)鏈并創(chuàng)建 UserRepository 實(shí)例時(shí),就會(huì)注入依賴(lài) 項(xiàng)。
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);
  }
}

從后臺(tái)線程訪問(wèn) HttpContext

HttpContext 不是線程安全型。 在處理請(qǐng)求之外讀取或?qū)懭?HttpContext 的屬性可能會(huì)導(dǎo)致 NullReferenceException。

要使用 HttpContext 數(shù)據(jù)安全地執(zhí)行后臺(tái)工作,請(qǐng)執(zhí)行以下操作:

  • 在請(qǐng)求處理過(guò)程中復(fù)制所需的數(shù)據(jù)。
  • 將復(fù)制的數(shù)據(jù)傳遞給后臺(tái)任務(wù)。

要避免不安全代碼,請(qǐng)勿將 HttpContext 傳遞給執(zhí)行后臺(tái)工作的方法。 而是傳遞所需要的數(shù)據(jù)。 在以下示例中,調(diào)用 SendEmailCore,開(kāi)始發(fā)送電子郵件。 將 correlationId 傳遞到 SendEmailCore,而不是 HttpContext。 代碼執(zhí)行不會(huì)等待 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)
  {
    ...
  }
}

到此這篇關(guān)于在ASP.NET Core5.0中訪問(wèn)HttpContext的方法步驟的文章就介紹到這了,更多相關(guān)ASP.NET Core 訪問(wèn) HttpContext內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • .Net Core中自定義認(rèn)證實(shí)現(xiàn)

    .Net Core中自定義認(rèn)證實(shí)現(xiàn)

    本文主要介紹了.Net Core中自定義認(rèn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • ASP.NET Core Zero模塊系統(tǒng)講解

    ASP.NET Core Zero模塊系統(tǒng)講解

    本文詳細(xì)講解了ASP.NET Core Zero模塊系統(tǒng),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • repeater做刪除前彈窗詢(xún)問(wèn)實(shí)例

    repeater做刪除前彈窗詢(xún)問(wèn)實(shí)例

    這篇文章介紹了repeater做刪除前彈窗詢(xún)問(wèn)實(shí)例,有需要的朋友可以參考一下
    2013-10-10
  • 效控制C#中l(wèi)abel輸出文字的長(zhǎng)度,自動(dòng)換行

    效控制C#中l(wèi)abel輸出文字的長(zhǎng)度,自動(dòng)換行

    效控制C#中l(wèi)abel輸出文字的長(zhǎng)度,自動(dòng)換行...
    2007-04-04
  • asp.net 支付寶及時(shí)到帳接口使用詳解

    asp.net 支付寶及時(shí)到帳接口使用詳解

    這兩天寫(xiě)支付寶接口, 這個(gè)話題不新了, 因?yàn)楹芏嗳硕?做過(guò)了, 在這里我說(shuō)說(shuō)我的看法吧, 先說(shuō)一下實(shí)現(xiàn)
    2010-03-03
  • .Net Core Api 使用版本控制詳解

    .Net Core Api 使用版本控制詳解

    Api的版本控制是Api開(kāi)發(fā)中經(jīng)常遇到的問(wèn)題, 在大部分中大型項(xiàng)目都需要使用到Api的版本控制,這篇文章主要介紹了.Net Core Api 使用版本控制詳解,感興趣的小伙伴們可以參考一下
    2018-10-10
  • asp.net開(kāi)發(fā)中怎樣去突破文件依賴(lài)緩存

    asp.net開(kāi)發(fā)中怎樣去突破文件依賴(lài)緩存

    緩存大家用的太多了,簡(jiǎn)單至一個(gè)用static修飾的變量都可以視作緩存,復(fù)雜至Memcached等大數(shù)據(jù)量的緩存。
    2011-07-07
  • LINQ教程之LINQ簡(jiǎn)介

    LINQ教程之LINQ簡(jiǎn)介

    這篇文章介紹了語(yǔ)言集成查詢(xún)LINQ,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • xUnit 編寫(xiě) ASP.NET Core 單元測(cè)試的方法

    xUnit 編寫(xiě) ASP.NET Core 單元測(cè)試的方法

    這篇文章主要介紹了xUnit 編寫(xiě) ASP.NET Core 單元測(cè)試的方法,文中代碼非常詳細(xì),幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹

    ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹

    這篇文章介紹了ASP.NET?Core?MVC中Form?Tag?Helpers的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02

最新評(píng)論

恩平市| 吉林市| 友谊县| 五原县| 枣阳市| 安福县| 左云县| 建阳市| 湘乡市| 星子县| 革吉县| 台安县| 绥棱县| 库尔勒市| 南华县| 沂水县| 宣汉县| 遵义县| 长泰县| 汤原县| 余江县| 和平县| 洛宁县| 泗阳县| 东台市| 赣榆县| 洛川县| 宜川县| 中山市| 平潭县| 沙河市| 元谋县| 安远县| 伊通| 商洛市| 安平县| 台前县| 洛浦县| 巴中市| 盐池县| 宜兴市|