Asp.Net Core現在のコンテキストオブジェクトの取得
4258 ワード
HttpContextの概要
.Net CoreのHttpContextコンテキストは抽象クラスであり、名前空間はMicrosoftである.AspNetCore.Http
プログラムセット
定義コード:
一、Mvcコントローラインスタンスにコンテキストオブジェクトを含む
二、静的なIServiceProviderを定義し、現在の要求コンテキストをグローバルに取得する
1.クラスの定義
2.プロファイルStartupで、
3.他のどこでも使う
注意:
IHttpContextAccessorインタフェースは、デフォルトでは依存注入によってインスタンス管理されないためです.
まずServiceCollectionに登録します.そうしないと、IISがリリースされた後にfactoryインスタンスがnullになります.
詳細:
Asp.Net Coreビュー整理(一)
Asp.Net Core異常処理整理
.Net Coreプロファイル読み込み整理
.Net CoreのHttpContextコンテキストは抽象クラスであり、名前空間はMicrosoftである.AspNetCore.Http
プログラムセット
etstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll
定義コード:
namespace Microsoft.AspNetCore.Http
{
//
// :
// Encapsulates all HTTP-specific information about an individual HTTP request.
public abstract class HttpContext
{
protected HttpContext();
一、Mvcコントローラインスタンスにコンテキストオブジェクトを含む
public IActionResult Index()
{
HttpContext _context = this.HttpContext;
return View();
}
二、静的なIServiceProviderを定義し、現在の要求コンテキストをグローバルに取得する
1.クラスの定義
public class TestOne
{
public static IServiceProvider ServiceProvider;
public static HttpContext GetContext()
{
object factory = ServiceProvider.GetService(typeof(Microsoft.AspNetCore.Http.IHttpContextAccessor));
HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
return context;
}
}
2.プロファイルStartupで、
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider svp)
{
TestOne.ServiceProvider = svp;
.....
}
3.他のどこでも使う
public IActionResult Index()
{
HttpContext _context = this.HttpContext;
if (_context == TestOne.GetContext())
return Content(" ");
return View();
}
注意:
IHttpContextAccessorインタフェースは、デフォルトでは依存注入によってインスタンス管理されないためです.
まずServiceCollectionに登録します.そうしないと、IISがリリースされた後にfactoryインスタンスがnullになります.
public void ConfigureServices(IServiceCollection services)
{
services.TryAddSingleton();
// Other code...
}
詳細:
Asp.Net Coreビュー整理(一)
Asp.Net Core異常処理整理
.Net Coreプロファイル読み込み整理