我有一个wcf服务。我将此类用于线程安全的全局变量:
public class WcfOperationContext : IExtension<OperationContext> {
private readonly IDictionary<string, object> items;
private WcfOperationContext() {
items = new Dictionary<string, object>();
}
public IDictionary<string, object> Items {
get { return items; }
}
public static WcfOperationContext Current {
get {
WcfOperationContext context = OperationContext.Current.Extensions.Find<WcfOperationContext>();
if (context == null) {
context = new WcfOperationContext();
OperationContext.Current.Extensions.Add(context);
}
return context;
}
}
在我的商务课程中,我有两种方法:
public async Task<...> Method1(...){
string refID = WcfOperationContext.Current.Items["RefID"].ToString();
Method2();
...
}
public async Task<int> Method2(){
string refID = WcfOperationContext.Current.Items["RefID"].ToString();
...
}
在Method1中,我可以从WcfOperationContext获取refID。但是在Method2中有时(并非总是)我在这一行得到错误:
WcfOperationContext context = OperationContext.Current.Extensions.Find<WcfOperationContext>();
因为OperationContext.Current为null。
我怎样才能做到这一点?