C# web api вылетает при объявление класса

Рейтинг: 0Ответов: 0Опубликовано: 15.05.2023
    [HttpPost("/Auth")]
    public ActionResult Auth([FromBody] UserSoft userSoftJson)
    {
        Setting settingsss = new(); //Сервер вылетает
        try
        {
            var soft = db.UserSoft.FirstOrDefault(x => x.Token == userSoftJson.Token);
            if (soft == null)
            {
                UserSoft userSoft = new UserSoft();
                userSoft.UserID = userSoftJson.UserID;
                userSoft.Token = userSoftJson.Token;
                db.UserSoft.AddRange(userSoft);
                Setting setting = new(); //Сервер вылетает
                setting.UserSoft = userSoft;
                db.Setting.AddRange(setting);
                lock (this)
                    db.SaveChanges();
            }
            return Ok();
        }
        catch(Exception ex)
        {
            string message = ex.Message.ToString();
            return BadRequest();
        }
    }

 public class Setting
    {
        public long Id { get; set; }
        public string? Name { get; set; } = "По умолчанию";
        //[JsonIgnore]
        public UserSoft? UserSoft { get; set; } = new();
        public DeleteMessage? DeleteMessage { get; set; } = new();
        public HelloDB? HelloDB { get; set; } = new();
    }

Когда срабатывает метод Auth в строках где объявляется класс Setting, ставил брекпоинт, дальше строки объявления код не работает, catch тоже не срабатывает, приложение молча закрывается. Кто то сталкивался с таким? Код работал, перестал работать когда изменил модель и внес пару классов. Этих

public DeleteMessage? DeleteMessage { get; set; } = new();
public HelloDB? HelloDB { get; set; } = new();

Если удаляю эти классы, то все работает.

  public class DeleteMessage
    {
        //[Key]
        public long Id { get; set; }
        /// <summary>
        /// Ключевые слова в сообщениях
        /// </summary>
        public string? TbTextKey { get; set; }
        /// <summary>
        /// Включить удаление смс
        /// </summary>
        public bool? CbDeleteMessage { get; set; } = false;
        /// <summary>
        /// Удалять смс вступивших
        /// </summary>
        public bool? CbDeleteInvite { get; set; } = false;
        /// <summary>
        /// Удалять смс вышедших
        /// </summary>
        public bool? CbDeleteMessageExit { get; set; } = false;
        /// <summary>
        /// Банить если найдено ключевое слово
        /// </summary>
        public bool? CbMessegeBan { get; set; }
        [JsonIgnore]
        public long? SettingId { get; set; }
        [JsonIgnore]
        public Setting? Setting { get; set; } = new();
    }
    public class HelloDB
    {
        [Key]
        public long Id { get; set; }
        /// <summary>
        /// Текст сообщения приветствия
        /// </summary>
        public string? TbTextWelcome { get; set; }
        /// <summary>
        /// Inline кнопка к сообщению
        /// </summary>
        public bool? CBInline { get; set; } = false;
        /// <summary>
        /// Отправлять приветствие пользователю
        /// </summary>
        public bool? CbHelloMessage { get; set; } = false;
        /// <summary>
        /// Удалять приветствие
        /// </summary>
        public bool? CbDeleteHelloMessage { get; set; } = false;
        /// <summary>
        /// Удалять приветствие через
        /// </summary>
        public long DeleteWelocomeCount { get; set; }
        /// <summary>
        /// Формат времени в каком должно быть удалено приветствие, секунды, минуты, часы
        /// </summary>
        public string? TypeTimeDeleteHello { get; set;}
        /// <summary>
        /// Текст кнопки
        /// </summary>
        public string? TbTextInline { get; set; }
        /// <summary>
        /// Текст на кнопке Inline
        /// </summary>
        public string? TbUrlInline { get; set; }
        [JsonIgnore]
        public long? SettingId { get; set; }
        [JsonIgnore]
        public Setting? Setting { get; set; } = new();

    }

Ответы

Ответов пока нет.