首先.net core 与.net framework 是.net的不同版本。因此session的使用也不同
那么问题来了--.net core中使用session。 它复杂一些。
1.首先需要下载一个插件(Miscrosoft.AspNetCore.Session)
在解决方案的窗口(一般在右边)下你的项目里找到--“依赖项 或者叫dependances”--右击选择“管理Nuget程序包”
--点击打来--在搜索栏输入"session", 一般第一个就是“Miscrosoft.AspNetCore.Session”--安装它。
2.此时运行你 的测试session代码, 还不够, 可能会出现以下问题
“Session has not been configured for this application or request”就是你下载, 但没配置,也不行
3.找到startup.cs这个文件(在目录的最下方);
第一步 :解决方案:在Startup.cs文件中的Configure方法中加上这一句代码: app.UseSession();
不行再第二步(引用的图片):对应着方法名, 把大括号里的代码插进去;再试, 那个app.UseMvcWithDefaultRoute()如果报错, 就删掉。 就好了
我的心路。。
public void ConfigureServices(IServiceCollection services)HttpContext.Session 可调用get,set方法。但是默认的方法只能保存string类型。
{
services.AddMvc()
.AddSessionStateTempDataProvider();
services.AddSession();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSession();
app.UseMvcWithDefaultRoute();
}
using System;这么一来就可以存储其他类型了: 下面代码红色标记的是使用方法
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System.Text;
namespace ProjetZZ3.Fonction
{
public static class SessionExtension
{
/// <summary>
/// 设置Session对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session"></param>
/// <param name="key"></param>
/// <param name="obj"></param>
public static void SetObject<T>(this ISession session, string key, T obj)
{
session.SetString(key, JsonConvert.SerializeObject(obj));
}
/// <summary>
/// 获取Session对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="session"></param>
/// <param name="key"></param>
/// <returns></returns>
public static T GetObject<T>(this ISession session, string key)
{
T result = default(T);
var value = session.GetString(key);
if (!String.IsNullOrEmpty(value))
{
result = JsonConvert.DeserializeObject<T>(value);
}
return result;
}
}
}
//添加到购物车功能
public IActionResult Add()
{
Commande c = new Commande("sdasd", 3);//模拟一个新的订单
List<Commande> panier_dans_session = new List<Commande>();
//if session["panier"] 是空的, 将它添加到原来的购物车中
if (HttpContext.Session.GetObject<List<Commande>>("panier") != null)
{
panier_dans_session = HttpContext.Session.GetObject<List<Commande>>("panier");
panier_dans_session.Add(c);
HttpContext.Session.SetObject("panier", panier_dans_session);
}
//else session["panier"] est vide,
else
{
panier_dans_session.Add(c);
HttpContext.Session.SetObject("panier", panier_dans_session);
}
ViewData["panier"] = panier_dans_session;
return View("Commandes");
}
- 本文标题: .net core 3.0 session的使用,如何用session存object类型数据List泛型
- 文章分类:【.NET/Web】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
- 上一篇:判断ID是否存在List泛型里面
- 下一篇: layui.layedit无法获取值