HttpContextのASP.NETコア開発

ASP.NETコアのHttpContextを開発、ASP.NETの開発では、我々は常に、頻繁のHttpContextを使用します。

それでは、どのようにASP.NETコアでのHttpContextでそれを使うのですか、ここでは具体的な学習ASP.NETコアのHttpContextです。

インジェクションHttpContextAccessor

ASP.NETは、媒体コア提供IHttpContextAccessorインタフェース、HttpContextAccessorデフォルトはそれがアクセスのHttpContextを簡略化実現しました。

それはあなたがプログラムにHttpContextAccessorに得ることができるので、プログラムの起動時にIServicesCollectionに登録して、のHttpContextにアクセスするために使用する必要があります。

services.AddSingleton <IHttpContextAccessor、HttpContextAccessor>();

取得HttpContextAccessor

のは、実際の操作は、get HttpContextAccessorをやってみましょう。

新しいASP.NETコアWebアプリケーションを作成し、Webアプリケーションを選択します。認証は、認証のためにチェックされません。

HomeControllerは、次のコードを追加します。

パブリッククラスにHomeController:コントローラ
    { 
        プライベートIHttpContextAccessorの_accessor。
        公的にHomeController(IHttpContextAccessorアクセサ)
        { 
            _accessor =アクセッサ。
        } 
        公共IActionResultインデックス()
        { 
            VARのHttpContext = _accessor.HttpContext。
            ビューを返します(); 
        } 
    }

だから、のHttpContextに得ることができます

公共IActionResutインデックス()
{ 
   VAR httpConetext = _accessor.HttpContext。
   ビューを返します();  
}

実行後HttpContextオブジェクトを取得することができます。また、プログラムが起動するとき、それはHttpContextAccessorに到達するために注入されている必要があり、上記と述べました。

それが注入されている新しいプログラムそう。

ここにあります 

公共のボイドConfigureServices(IServiceCollectionサービスは)
{ 
   //フレームワークサービスを追加します。
   services.AddMvc(); 
}

services.AddMvc()が注入されます。

HttpContext.Currentを達成

私たちは、ASP.NETコアは今そうしていない、ASP.NETでの使用の多くHttpContext.CurrentのHttpContextを取得します。

それでも静的HttpContext.Currentを使用する場合でも、古いプログラムを移行のコストを削減、または達成することができます。

静的のHttpContextクラスを作成し、

   パブリック静的クラスのHttpContext 
    { 
        プライベート静的IHttpContextAccessorの_accessor。

        パブリック静的Microsoft.AspNetCore.Http.HttpContext電流=> _accessor.HttpContext。

        内部静的ボイド設定(IHttpContextAccessorアクセサ)
        { 
            _accessor =アクセッサ。
        } 
    }

そして、その後に拡張クラスを追加します。

パブリック静的クラスStaticHttpContextExtensions 
    { 
        公共静的ボイドAddHttpContextAccessor(このIServiceCollectionサービス)
        { 
            services.AddSingleton <IHttpContextAccessor、HttpContextAccessor>(); 
        } 

        パブリック静的IApplicationBuilder UseStaticHttpContext(このIApplicationBuilder APP)
        { 
            VAR httpContextAccessor = app.ApplicationServices.GetRequiredService <IHttpContextAccessor>(); 
            HttpContext.Configure(httpContextAccessor)。
            アプリを返します。
        } 
    }

そして、それはスタートアップカテゴリに呼び出すことができます。

デフォルトでは、MVCプロジェクトに直接UseStaticHttpContextを呼び出す場合()することができます。

    公共ボイド設定(IApplicationBuilderアプリ、IHostingEnvironment ENV、ILoggerFactory loggerFactory)
        { 
            app.UseStaticHttpContext()。

HttpContextAccessorを注入せずにプロジェクトでは、この方法は、ConfigureServicesを呼び出す必要があります

services.AddHttpContextAccessor();

その後、別の場所HttpContext.Currentを使用することができます。

        公共IActionResultインデックス()
        { 
            VAR statichttpcontext = HttpContextDemo.HttpContext.Current。
            ビューを返します(); 
        }

ここに示されたそれはコントローラーで呼び出すことです、実際には、より多くのは、このようなミドルウェアや彼自身の執筆サービスの一部として他の場所で呼び出すことです。

実際には、コントローラが直接のHttpContext、ControllerBaseのHttpContextクラスは、プロパティを持って使用することができます。

おすすめ

転載: www.cnblogs.com/sylone/p/11481446.html