Ошибка: NullReferenceException при регистрации пользователя
Привет всем! У меня возникла проблема с ошибкой System.NullReferenceException в файле Repository.cs моего проекта. Эта ошибка мешает новым пользователям зарегистрироваться.
Суть проблемы
При попытке регистрации нового пользователя происходит NullReferenceException. Лог ошибки указывает на строку 163 в файле NeptuneEvo\Accounts\Registration\Repository.cs.
Лог ошибки:
03:41:20.828 | Error | Accounts.Registration.Repository | Register Exception (Global Catch) for player WeirdNewbie: System.NullReferenceException: Object reference not set to an instance of an object.
at NeptuneEvo.Accounts.Registration.Repository.Register(ExtPlayer player, String login, String pass_, String email, String promo_, String ga, List`1 list) in C:\Users\aeeea\AppData\Local\Temp\Rar$DRa22156.33545.rartemp\serever\RedAgeServer\dotnet\resources\NeptuneEvo\Accounts\Registration\Repository.cs:line 163
at NeptuneEvo.Accounts.Registration.Repository.Register(ExtPlayer player, String login, String pass_, String email, String promo_, String ga, List`1 list) in C:\Users\aeeea\AppData\Local\Temp\Rar$DRa22156.33545.rartemp\serever\RedAgeServer\dotnet\resources\NeptuneEvo\Accounts\Registration\Repository.cs:line 258
Что я уже пробовал
Я предполагаю, что ошибка на строке 163 возникает при попытке записи данных объекта accountData в базу данных (db.InsertAsync). Вероятнее всего, одно из полей accountData является null в этот момент.
Я уже добавил множество проверок на null и инициализацию полей по умолчанию (например, ?? "" для строк и ?? new List<...>() для списков), чтобы избежать этой ошибки. В частности, я убедился, что поля Unique, Ga, а также списки PromoCodes, BonusCodes, Chars, FreeCase, ReceivedAward и CollectionGifts не должны быть null перед записью в БД.
Прошу помощи
Если у кого-то есть идеи, что ещё может быть null на этой строке или в блоке db.InsertAsync, или как провести более точную диагностику без доступа к дебаггеру, буду очень благодарен за помощь!
Моя строка 163 и ближайший контекст (приблизительно):
Спасибо за любую помощь!Код:C# await db.InsertAsync(new global: :Database.Accounts // Эта строка или сразу после неё может быть строкой 163 { Login = accountData.Login, Email = accountData.Email, Password = accountData.Password, Hwid = accountData.HWID, Ip = accountData.IP, Socialclub = accountData.SocialClub, Redbucks = accountData.RedBucks, Viplvl = accountData.VipLvl, Vipdate = accountData.VipDate, Promocodes = JsonConvert.SerializeObject(finalPromoCodes), Bonuscodes = JsonConvert.SerializeObject(finalBonusCodes), Character1 = finalChars[0], Character2 = finalChars[1], Character3 = finalChars[2], Characters = JsonConvert.SerializeObject(finalChars.Skip(3).ToList()), @case = JsonConvert.SerializeObject(finalFreeCase), CollectionGifts = JsonConvert.SerializeObject(accountData.CollectionGifts ?? new List<int>()), // Это тоже проверял ReceivedAward = JsonConvert.SerializeObject(finalReceivedAward), Unique = finalUnique, // Это поле, полученное из Chars.Donate.SetUnique().ToString() Ga = finalGa // Это поле, полученное из параметра ga });