gpt4 book ai didi

c# - 如何使用 Azure Redis session 状态提供程序在 ASP.NET session 中存储集合

转载 作者:行者123 更新时间:2023-12-03 01:55:07 25 4
gpt4 key购买 nike

我在 ASP.NET MVC 5 应用程序中使用 Microsoft.Web.Redis.RedisSessionStateProvider 以及在 Azure 上配置的 Redis 缓存。

我正在谈论在 Controller 中定义的某些操作中将值存储在Session中。如果我存储原始值(Session["Foo"]="Bar")或原始值集合,它工作正常:

List<int> items = new List<int>();
items.Add(5);
Session["Items"] = items;

但是,如果我尝试存储我自己的类的集合,它不会持续存在(在另一个请求之后,Session["Products"]null):

List<Product> products = new List<Product>();
products.Add(db.Find(Id));
Session["Products"] = products;

Product看起来像这样:

public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public int CategoryID { get; set; }
[ForeignKey("CategoryID")]
public Category Category { get; set; }
public decimal Price { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}

我应该如何在 session 中存储此类的实例?

最佳答案

由于 Redis 是一个键值存储,因此您的对象需要序列化为 byte[] 流。尝试使用 [Serialized] 属性来装饰您的 Product 类。

参见MSDN .

关于c# - 如何使用 Azure Redis session 状态提供程序在 ASP.NET session 中存储集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24239888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com