C# web api вылетает при объявление класса
[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();
}
Источник: Stack Overflow на русском