データのキャッシュを試していますが、失敗し続けています。以下のコードでわかるように、「categories」という配列を返すようにWebサービスを呼び出します。この呼び出しは成功し、情報が返されます。ドロップダウンリストに結果を入力した直後に、挿入を使用して情報をキャッシュに保存します。ページが更新されると(ポストバック以外のことを言うべきだと思います)、キャッシュをチェックして情報がそこにあるかどうかを確認します。決してそうではありません。これに頭をかいて...
if (! IsPostBack)
{
//See if the results have been cached. With arrays and checking for null, you have to
//check the array itself before its elements can be checked.
string[] saveCatList = Cache.Get("Categories" + Session["sessionID"]) as string[];
if (saveCatList == null || string.IsNullOrEmpty(saveCatList[0]))
{
WBDEMOReference.getcatlist_itemcategories[] categories;
strResult = callWebServ.getcatlist(Session["sessionID"].ToString(),
out strResultText, out dNumOfCat, out categories);
for (int i = 0; i < categories.Length; i++)
{
//ddCat is the ID number of the category drop down list
ddCat.Items.Add(new ListItem(categories[i].categorydesc.ToString(),
categories[i].categorynumber.ToString()));
}
//Store the array into cache. 'Cache.Remove' will remove the cache for that key
Cache.Insert("Categories" + Session["sessionID"], categories, null,
DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
}
}