C# 如何在.NET Core 2.1 WebApi中存储数据?
我正在.NETCore2.1中开发一个WebApi,我需要一个共享的键/值存储,可以通过API接收的任何请求进行写入和读取C# 如何在.NET Core 2.1 WebApi中存储数据?,c#,.net,asp.net-web-api,.net-core,C#,.net,Asp.net Web Api,.net Core,我正在.NETCore2.1中开发一个WebApi,我需要一个共享的键/值存储,可以通过API接收的任何请求进行写入和读取 存储应该使用应用程序的堆,而不是外部系统(例如Redis缓存或平面文件解决方案),因为我必须保留无法序列化的C#对象。如果我没有错,您希望将数据存储在C#中,就像内存缓存一样。 您可以使用下面的类 public class ApplicationCacheManager { private Dictionary<string,
存储应该使用应用程序的堆,而不是外部系统(例如Redis缓存或平面文件解决方案),因为我必须保留无法序列化的C#对象。如果我没有错,您希望将数据存储在C#中,就像内存缓存一样。 您可以使用下面的类
public class ApplicationCacheManager
{
private Dictionary<string, object> Data { get; set; }
public ApplicationCacheManager()
{
Data = new Dictionary<string, object>();
}
public bool IsSet(string key)
{
return Data.TryGetValue(key, out var data) && data != null;
}
public T Get<T>(string key)
{
if (Data.TryGetValue(key, out var data))
return (T)data;
return default(T);
}
public void Set<T>(string key, T data)
{
Data[key] = data;
}
public void Remove(string key)
{
Data.Remove(key);
}
public void Dispose()
{
if (Data != null)
Data = null;
}
}
公共类应用程序缓存管理器
{
专用字典数据{get;set;}
公共应用程序CacheManager()
{
数据=新字典();
}
公共布尔IsSet(字符串键)
{
返回数据。TryGetValue(键,输出var数据)&&Data!=null;
}
公共T获取(字符串键)
{
if(数据TryGetValue(键,输出var数据))
返回(T)数据;
返回默认值(T);
}
公共无效集(字符串键,T数据)
{
数据[键]=数据;
}
公共无效删除(字符串键)
{
数据删除(键);
}
公共空间处置()
{
如果(数据!=null)
数据=空;
}
}
这个类应该是单例的,以存储应用程序生命周期中的所有数据。
将其注册到DI容器作为singleton
services.AddSingleton<ApplicationCacheManager>();
services.AddSingleton
我希望这能有所帮助。请注意,内存中的存储不是持久性的。话虽如此:您可以使用静态
,但请确保它们是线程安全的。谢谢您,我刚刚完成了它的实现,它的工作非常有魅力。很高兴提供帮助,祝您愉快!