目前,我们的生产服务器上存在一个非常奇怪的问题。对于查询字符串中的特定参数,我们在其他请求中获取查询字符串的数据。我试图通过在IHttpHandler中使用ConcurrentDictionary的方式来确定是否会导致此行为:
下面是伪代码示例:
public class MyHandler : IHttpHandler
{
private static ConcurrentDictionary<string, DataObject> _dataCache = new ConcurrentDictionary<string, DataObject>();
public virtual bool IsReusable
{
get { return true; }
}
public virtual void ProcessRequest(HttpContext context)
{
Func<DataObject> getDataMethod = () =>
{
return DataFactory.GetData(context.Request.QueryString["dataid"].ToLower());
}
string cacheKey = HttpUtility.UrlDecode(context.Request.QueryString["dataid"].ToLower());
DataObject infoItem = _dataCache .GetOrAdd(cacheKey, (key) => { return getDataMethod(); })
//Other processing code
}
}
因此,对于“dataid=1
”,我会收到“dataid=2
”的数据......
执行getDataMethod
后,我可以确定它会访问相关的context
吗?