我有一个代理 WCF 服务,它驻留在客户端的 IIS 中,并向下调用外部 WCF 服务(由 Windows 服务调用)。由于统计信息是从 Windows 服务收集的,因此它们存储在以下 m_statList 字典中。
public static Dictionary<int, LinkedList<StatValue>> m_statList = new Dictionary<int, LinkedList<StatValue>>();
public static Dictionary<int, LinkedList<StatValue>> Stats
{
get
{
return m_statList;
}
}
m_statList 会在服务运行时保留这些值,但是一旦代理在 m_statList 中进行调用,就会将计数设置为零。
以下是我从内部代理服务拨打电话的方式:
public Dictionary<int, List<StatValue>> GetStats(DateTime getFromDate, List<int> getValueList)
{
Dictionary<int, List<StatValue>> returnList = new Dictionary<int, List<StatValue>>();
foreach (var stat in DashboardCollectorService.Stats.Where(k => getValueList.Contains(k.Key)))
{
returnList.Add(stat.Key, stat.Value.Where(s => s.StatDateTime > getFromDate).ToList<StatValue>());
}
return returnList;
}
当我从代理调用统计信息时,我不确定我的 m_statList 是否为空。
public class DashboardProxyService : IDashboardWCFService
{
DashboardWCFService buffer = new DashboardWCFService();
Dictionary<int, List<StatValue>> IDashboardWCFService.GetStats(DateTime getFromDate, List<int> getValueList)
{
return buffer.GetStats(getFromDate, getValueList);
}
List<StatType> IDashboardWCFService.GetStatTypes()
{
return buffer.GetStatTypes();
}
}