ネットコアWebAPIの関連の設定でのセッション、およびアクセス

それに応じて提供するスタートアップファイル:ステップ

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(キー);

 

おすすめ

転載: www.cnblogs.com/for-easy-fast/p/12157664.html