我可以使用OwinContext在单个ASP.NET MVC5应用程序之间共享数据吗
本文关键字:应用程序 MVC5 之间 共享 数据 NET ASP 可以使 OwinContext 单个 我可以 | 更新日期: 2023-09-27 18:27:30
我希望在所有应用程序请求中共享特定的静态数据(特别是站点菜单DTO)。在旧的system.web.dll
时代,这将把Application_Start
中的数据添加到HttpContent.Current.Application[]
字典中。我相信Owin/OwinContext可以实现非常相似的功能,但无法找到添加/访问它的简单方法。有人能帮忙吗?
Microsoft.AspNet.Identity.Owin
库包含类OwinContextExtensions
,该类具有以下方法:
public static T Get<T>(this IOwinContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
return context.Get<T>(OwinContextExtensions.GetKey(typeof(T)));
}
public static T Set<T>(this IOwinContext context, T value)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
return context.Set<T>(OwinContextExtensions.GetKey(typeof(T)), value);
}
我确信您可以使用这些来设置和获取存储在OwinContext
中的值。请注意,存储在上下文中的对象的键名是类型,因此对于集合,您应该为唯一名称创建一个具体的类型:
public MyDictionary : Dictionary<string, int>
{
}
var myDic = new MyDictionary();
var context = HttpContext.GetOwinContext();
context.Set(myDic);
var myDic2 = context.Get<MyDictionary>();