c#静态数据字典在源数据更改时仍然存在-即使在IIS用户之间也是如此

c#静态数据字典在源数据更改时仍然存在-即使在IIS用户之间也是如此,c#,asp.net,controls,C#,Asp.net,Controls,我有一个网上商店,软件是高度定制的,但不完全是我们的。我们出售旅游,其中一些有预订,所以我添加了一个日历,让他们选择他们想要的日期/时间。最初,每个cal\u SelectionChanged()调用都是从商店数据库中查找资料,当然,速度非常慢。我想使用数据字典一次性获取信息,并在需要时随时使用 我有这门课: public partial class ConLib_Custom_BuyTourProductDialog : System.Web.UI.UserControl 这是在那个

我有一个网上商店,软件是高度定制的,但不完全是我们的。我们出售旅游,其中一些有预订,所以我添加了一个日历,让他们选择他们想要的日期/时间。最初,每个
cal\u SelectionChanged()
调用都是从商店数据库中查找资料,当然,速度非常慢。我想使用数据字典一次性获取信息,并在需要时随时使用

我有这门课:

    public partial class ConLib_Custom_BuyTourProductDialog : System.Web.UI.UserControl
这是在那个类中声明的

    static Dictionary<string, string> CustomFieldDict = new Dictionary<string, string>();
然后我的老板加载了一个页面-好的,一切都很好-并更改了数据库中的一个数据位,以指向一个不同的、错误的,
ResEventTypeId
。重新加载页面,页面将包含新数据。他把它改回了原来的版本,但它“卡”在了错误的信息上。我在iPad上加载了一个浏览器,然后去了那里,它也给了我错误的信息

服务器似乎正在缓存
DataDictionary
,即使我们更改了数据库,所有访问者,即使在其他会话中,也会得到错误的缓存信息

  • 你认为这个评估正确吗
  • 这样做的正确方法是什么,使更改日期的访问者获得某种缓存的查找速度,而另一个浏览器从数据库中获得一个新的集合
  • 我如何让它“忘记”它认为它知道的东西并接受新信息,直到我修复它?重置IIS 谢天谢地,这是在开发服务器上,而不是我的live store上


    谢谢你的帮助。关于C#和.NET,我学到了很多,但这是一种树荫树技工类型的东西,我缺乏正式的培训,在这种情况下确实会有所帮助。感谢您的帮助

    对于以后来的任何人:

    琼西所说的是非常真实的——静态是可怕的。我从一个站点(链接到他链接中的一个链接)中发现,像这样的静态数据对应用程序池级别是粘性的,因此任何其他浏览器都会得到“错误”的信息


    对于我的情况,我决定使用ViewState来存储信息,因为它很小,而且我当前的V.S.还不是很大。注意对大量数据执行此操作,但在我的情况下,这是最好的

    阅读链接后,不要在web内容中使用静态变量来表示同意-非常可怕。谢谢我想每个人都通过艰苦的方式学会了这一点
        protected void LoadCustomFieldDictionary()
        {
            string _sku = _Product.Sku.Trim().ToLower();
    
            if (CustomFieldDict.ContainsKey("Sku"))
            {
                // is the dictionary entry for *this* sku?
                if (CustomFieldDict["Sku"] == _sku)
                {
                    return; // already have this one.
                }
            }
    
            CustomFieldDict["Sku"] = _sku;
            CustomFieldDict["EventId"] = TTAUtils.GetCustomFieldValue(_Product, "EventId");
            CustomFieldDict["ResEventTypeId"] = TTAUtils.GetCustomFieldValue(_Product, "ResEventTypeId");
    
            etc.
        }