Недавно я обнаружил ошибку в нашей системе, где свойство в dll было общим. В случае ASP.Net это вызвало проблемы с безопасностью потоков.Альтернатива HttpContext.Current.Items
protected static object Data { get; set; }
Для того, чтобы исправить это с наименьшим изменением возможно, я выгружена внутреннее свойство, чтобы сделать использование HttpContext.Current.Items
для хранения и извлечения значения. Это работает в случае наших веб-сайтов.
protected static object Data
{
get
{
return HttpContext.Current.Items[DataKey] as object;
}
set
{
HttpContext.Current.Items[DataKey] = value;
}
}
Однако у нас также есть exe, ссылающийся на эту dll. Когда это выполняется, (очевидно) не имеет ссылки на HttpContext.Current
.
Есть ли альтернативный объект, который я могу использовать, который будет работать как для asp.net, так и для exe. Я хочу использовать ветвящуюся логику для определения того, какое свойство следует ударить, если это необходимо, пока мне нужно только изменить это свойство (очевидно, что одно из них является предпочтительным.
Я нашел атрибут '[ThreadStatic]'. Будет ли это работать как для exe, так и для абонентов Asp.Net? –
http://stackoverflow.com/a/407931/4172872 – levent