【发布时间】:2017-02-13 09:29:36
【问题描述】:
最近,我在我们的系统中发现了一个错误,即共享 dll 中的属性。对于 ASP.Net,这会导致线程安全问题。
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;
}
}
但是,我们也有一个引用此 dll 的 exe。当它运行时(显然)没有对HttpContext.Current 的引用。
是否有我可以使用的替代对象同时适用于 asp.net 和/或 exe。如有必要,我愿意使用分支逻辑来确定要命中的属性,只要我只需要更改此属性即可(显然,首选一种解决方案。
【问题讨论】:
-
我找到了
[ThreadStatic]属性。这对 exe 和 Asp.Net 调用者都有效吗?
标签: c# asp.net static thread-safety httpcontext