この問題の解決策を見つけるのに苦労しています。このサイトには、この件に関連する同様のエントリがたくさんありますが、解決策にたどり着けないようです。キャッシュ内のテーブルをチェックして、既に存在するかどうかを確認し、存在しない場合はデータを入力しようとしています。以下はそのチェックのコードで、「if」ステートメントで「System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。「.IsNullOrEmpty」がこれをキャッチすべきではないため、これは不可解です。配列の最初の要素がnullまたは空の場合、まだキャッシュされていないため、アクションを実行します。
string[] saveCatList = Cache["Categories" + Session["sessopnID"]] as string[];
if (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()));
}
}