C# Хранимые классы DTO внутри HttpContext.Current.Items, пропускающие вложенные элементы массива - PullRequest
0 голосов
/ 13 февраля 2020

У меня проблема с получением сохраненных элементов из HttpContext.Current.Items в контексте API. Я пытаюсь сохранить массив DTO для элементов, чтобы затем получить их в разных точках вызова. Я получаю DTO, и он правильно отображает 2 элемента, но это не отображение массива, который я вложил в класс. Массив заканчивается нулем. Я проверил, что массив не является нулевым, проверив длину во время хранения. Я также проверил, что массив фактически равен нулю, когда я пытаюсь получить его. Сообщений об ошибках не было, содержимое, которое я ожидаю от API, только что возвращается.

Массив следующего класса сохраняется, а массив целых чисел "ab_ids" - это то, что присваивается нуль когда я go чтобы получить его:

    public class AreaOfResponsibilityDTO
    {
        public int site_id { get; set; }
        public int[] ab_ids { get; set; }
        public bool? all_plans { get; set; }
    }

Вот где я его храню:

     AreaOfResponsibilityDTO[] user_aor = CompileUserAreaOfResponsibility(user);
     HttpContext.Current.Items.Add("current_user_aor", user_aor);

Я убедился, что список целых чисел заполнен в большинстве DTO перед хранением.

Затем я нахожусь в контроллере API, но в том же контексте, извлекая его с помощью следующего и проверяя присвоение "ab_ids". В журнале все массивы int возвращаются как «false» (null):

     AreaOfResponsibilityDTO[] AORs = HttpContext.Current.Items["current_user_aor"] as AreaOfResponsibilityDTO[];

     foreach (AreaOfResponsibilityDTO AOR in AORs)
     {
         errorLog.WarnFormat("AOR MANAGER RETRIEVAL - ABs: {0}", AOR.ab_id != null);
     }

Я попытался узнать больше о методе хранения в Items, если мне даже разрешено хранить DTO, но я не нашел никакой информации о том, что не могу. Если у кого-то есть вклад, я буду искренне признателен.

...