それに応じて提供するスタートアップファイル:ステップ
ConfigureServicesメソッドが追加されました
// ConfigureServicesが追加されました: services.AddSession(オプション => { options.Cookie.Name = " .AdventureWorks.Session " ; options.IdleTimeout = System.TimeSpan.FromSeconds(120); // セッションの有効期限設定 options.Cookieを。 = HttpOnlyの真の ; //は、ブラウザは、クッキーJSの値を得ることができない設定 }); services.TryAddSingleton <IHttpContextAccessor、HttpContextAccessor> (); services.AddHttpContextAccessor(); #regionクロスドメイン services.AddCors(オプション => options.AddPolicy(" AllowSameDomain " 、 ビルダー => builder.WithOrigins()AllowAnyMethod()AllowAnyHeader()AllowAnyOrigin()AllowCredentials())。。。。)。 #endregion
HttpContextへのアクセス簡素化// HttpContextAccessorデフォルト実装
services.AddSingleton <IHttpContextAccessor、HttpContextAccessor>()を。
追加の設定方法
app.UseSession(); // UseMvc前UseSession構成
特定のコンフィギュレーション制御における二つの対応するデータ
1.設定および取得するHttpContext
例:
パブリック クラスにHomeController:コントローラ { プライベートIHttpContextAccessorの_accessor。 公的にHomeController(IHttpContextAccessorアクセサ) { _accessor = アクセッサ。 } 公共IActionResultインデックス() { VARのHttpContext = _accessor.HttpContext。 リターンビュー(); } }
2.書き込みSessionHelperをクラス
パブリック クラスSessionHelperを { プライベートIHttpContextAccessorの_accessor。 プライベートISessionの_SESSION; プライベートIRequestCookieCollection _requestCookie。 プライベートIResponseCookies _responseCookie。 公共SessionHelperを(のHttpContextコンテキスト) { _SESSION = context.Session。 _requestCookie = context.Request.Cookies。 _responseCookie = context.Response.Cookies。 } /// <要約> /// 设置セッション值 /// </要約> /// <PARAM NAME = "セッション"> </ param>の /// <PARAM NAME = "キー"> 键</ param>の /// <PARAM NAME = "値"> 值</ PARAM > 公共 ボイド SetSession(文字列キー、文字列値) { VARバイト= System.Text.Encoding.UTF8.GetBytes(値)。 _session.Set(キー、バイト)。 } /// <要約> /// 获取セッション值 /// </要約> /// ます。<param name = "キー"> </ param>の /// <リターン> getSession(文字列キー) { バイト[]バイト。 _session.TryGetValue(キー、アウトバイト)。 VaRの値= System.Text.Encoding.UTF8.GetString(バイト)。 もし(ストリング.IsNullOrEmpty(値)) { 値 = ストリング.Empty。 } 戻り値。 } /// // <要約> /// //设置本地クッキー /// // </要約> /// // ます。<param name = "キー"> 键</ param>の /// // ます。<param name = "値"> 值</ param>の /// // ます。<param name = "分"> 过期时间</ param>の // ます。public void SetCookies(文字列キー、文字列値、INT日= 1) // { // _responseCookie.Append(キー、値、新しいCookieOptions // { //は 有効期限= DateTime.Now.AddDays(日) // })。 // } // 公共ボイドDeleteCookies(文字列キー) // { // _responseCookie.Delete(キー)。 } // パブリックストリングGetCookiesValue(文字列キー) // { // _requestCookie.TryGetValue(キー、文字列値アウト)。 // IF(string.IsNullOrEmpty(値)) // { // 値= String.Emptyを。 // } // 戻り値; // } }
SessionHelperをを呼び出す3.方法
VARのHttpContext = _accessor.HttpContext; SessionHelperをセッション = 新しい新しい(のHttpContext)SessionHelperを、 文字列のキー= " 王" ; String型の値= " 2020年大運河" ; // 設定されたセッション値 session.SetSession(キー、値); / / セッション値を取得 session.GetSession(キー);