2014-10-22 1 views
2

Я хотел бы иметь конкретные статические данные (в частности, меню DTO сайта), разделяемое всеми запросами приложений. В старых system.web.dll днях это будет добавление данных в Application_Start в словарь HttpContent.Current.Application[]. Я уверен, что очень похоже на Owin/OwinContext, но не может найти простой способ добавления/доступа к нему. Может ли кто-нибудь помочь?Могу ли я использовать OwinContext для совместного использования данных в одном приложении ASP.NET MVC5?

ответ

2

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>(); 
Смежные вопросы

 Смежные вопросы