2017-08-31 123 views

回答

1

您需要將會話作爲服務添加到startup.cs文件中。

記得以前services.AddMvc();Go to this link for all the details.

添加它由於在Visual Studio 2017年沒有project.json,你可以跳過這一部分。

0

你需要在服務配置註冊會議 -

services.AddSession(options => 
      { 
       options.IdleTimeout = TimeSpan.FromMinutes(30); 
       options.CookieHttpOnly = true; 
      }); 

要使用它在構造函數中的任何地方注入。在這裏,我使用控制器構造函數進行演示 -

using Microsoft.AspNetCore.Http; 

public class AccountController : Controller 
    { 
     private ISession _session; 
     public AccountController(IHttpContextAccessor contextAccessor) 
     { 
      _session = contextAccessor.HttpContext.Session; 
     } 
    } 

現在在會話中獲取和設置值以簡化我的目的;我用下面的擴展方法 -

public static class HttpSessionExtension 
    { 
     public static void Set<T>(this ISession session, string key, T value) 
     { 
      session.SetString(key, JsonConvert.SerializeObject(value)); 
     } 

     public static T Get<T>(this ISession session, string key) 
     { 
      var value = session.GetString(key); 
      return value == null ? default(T) : 
            JsonConvert.DeserializeObject<T>(value); 
     } 
    } 

的使用很簡單 -

_session.Set<MyModel>(Mykey, value); 
_session.Get<MyModel>(Mykey); 
相關問題