gpt4 book ai didi

asp.net-mvc - 为什么 System.Web.Services.Protocols.LogicalMethodInfo 无法在 Azure 缓存中序列化?

转载 作者:行者123 更新时间:2023-12-03 00:16:25 26 4
gpt4 key购买 nike

当我使用 azure 缓存但不使用 HttpRuntime.Cache 时出现错误:

类型“System.Web.Services.Protocols.LogicalMethodInfo”无法序列化。请考虑使用 DataContractAttribute 属性标记它,并使用 DataMemberAttribute 属性标记要序列化的所有成员。如果类型是集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。

搜索后,我注意到这篇文章说“HttpRuntime.Cache根本不序列化数据”
What is the default serialization used by the ASP.net HttpRuntime.Cache
示例代码:

protected void Page_Load(object sender, EventArgs e)
{
List<myclass> items = new List<myclass>();
MyClass item1 = new MyClass() { ID = 1 };
items.Add(item1);

HttpRuntime.Cache.Insert("test1", items); //working

DataCache cache = new DataCache("default");
cache.CreateRegion("reg");

cache.Put("test2", items, "reg");//error
}

}

public class MyClass
{
public MyClass()
{

Type myType = typeof(MyService);
MethodInfo myMethodInfo = myType.GetMethod("Add");
_log = new **LogicalMethodInfo**(myMethodInfo);
}
public int ID { get; set; }
public **LogicalMethodInfo** _log;
}

public class MyService
{
public int Add(int xValue, int yValue)
{
return (xValue + yValue);
}
}

最佳答案

您收到该错误是因为 System.Web.Services.Protocols.LogicalMethodInfo 不可序列化。为了添加到 Azure 缓存中,必须对对象进行序列化并通过网络发送到缓存服务器。显然,这不能用不可序列化的对象来完成。 HttpRuntime.Cache 是内存中的数据存储。因为它在内存中,所以不需要序列化对象,因此不关心缓存的对象是否可序列化。

关于asp.net-mvc - 为什么 System.Web.Services.Protocols.LogicalMethodInfo 无法在 Azure 缓存中序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330976/

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