要在您的项目中配置Session,您需要执行以下操作:
在您的 Startup.cs 中,在 Configure 方法下,添加以下内容:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSession();
}
然后在ConfigureServices方法下,添加这个:
public void ConfigureServices(IServiceCollection services)
{
//Added for session state
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(10);
});
}
创建对象类型的模型类(无论您想存储什么)。我举一个简单的例子:
public class SearchListViewModel
{
public int SearchID{ get; set; }
public string SearchName{ get; set; }
//so on
}
然后创建一个SessionExtension 帮助器来将您的复杂对象设置和检索为 JSON:
public static class SessionExtensions
{
public static void SetObjectAsJson(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObjectFromJson<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
然后最后将会话中的复杂对象设置为:
var search= new SearchListViewModel();
search.SearchID= 1;
search.SearchName= "Test";
HttpContext.Session.SetObjectAsJson("SearchListViewModel", search);
在会话中检索复杂对象:
var searhDetails = HttpContext.Session.GetObjectFromJson<SearchListViewModel>("SearchListViewModel");
int searchID= SearchListViewModel.SearchID;
string searchName= SearchListViewModel.SearchName;