bured |
Проверяйте на null объект Сессии перед обращением. |
Не, Андрюш, это не прокатит: в данном коде Session - это свойство страницы System.Web.UI.Page, оно будет присутствовать в любом потоке, которому доступна сама страница (экземпляр), поэтому оно доступно в экземплярном методе Treat(), хоть они и засунут на выполнение в поток.
А статический метод статического класса Typed ничего не знает об экземпляре страницы, его методах/свойствах и т.д.
Ему надо вытащить ссылку на HttpContext откуда-то извне, а "во вне" у него ничего подобного и нету... (см. пост выше).
З.Ы. единственный выход - цеплять ссылку на текуший HttpContext в сам статический класс прямо перед вызовом его хелперных свойств/методов:
private static HttpContext _ctx;
public static void SetContext(HttpContext ctx) { _ctx = ctx; }
public static string ClientID
{
get { string value; GetValue("ClientID", out value); return value; }
set { SetValue("ClientID", value); }
}
private static void SetValue<T>(string key, T value)
{
_ctx.Session[key] = value;
}
private static void GetValue<T>(string key, out T value)
{
value = (T)_ctx.Session[key];
}