我有一个在线商店,该软件是高度定制的,但不完全是我们的。我们出售旅游,其中一些有预订,所以我添加了一个日历,让他们选择他们想要的日期/时间。最初每次cal_SelectionChanged()
调用都是从商店数据库中查找内容,当然,这种调用速度非常慢。我想使用数据字典一次获取信息,并在需要时使用它。
我有这堂课:
public partial class ConLib_Custom_BuyTourProductDialog : System.Web.UI.UserControl
并在该类中声明。
static Dictionary<string, string> CustomFieldDict = new Dictionary<string, string>();
我还有一个函数来加载我在页面上需要的数据库中的所有位。我的计划是在Page_Load()
上调用它,只需在需要时访问该信息。
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.
}
然后我的老板加载了一个页面 - 好吧,一切都很好 - 并且改变了数据库中的一个数据位以指向另一个错误的ResEventTypeId
。重新加载页面,它有新数据。他把它改回原来的状态,并且“卡在”错误的信息上。我在iPad上加载了一个浏览器然后去了那里,它也给我提供了错误的信息。
服务器似乎正在缓存DataDictionary
,即使我们更改数据库所有访问者,即使在其他会话中,也会收到此缓存的错误信息。
谢天谢地,这是在开发服务器而不是我的实体店!
感谢您的帮助。我已经学到了很多关于C#和.NET的东西,但它是树荫式机械类型的东西,我缺乏正式的培训,并且在这样的情况下真的会有所帮助。任何帮助表示赞赏!
答案 0 :(得分:0)
对于以后来过的人:
琼西所说的非常真实 - 静力学是可怕的。我从一个站点(链接到他链接的链接)发现,这样的静态对应用程序池级别是粘性的,因此任何其他浏览器都会得到“错误”的信息。
对于我的情况,我决定使用ViewState存储信息,因为它很小,而且我目前的V.S.已经不是很大了。要小心为大量数据做这件事但在我看来这是最好的。