Несколько дней go Я решил переписать старый проект API с net core 2.0 на 3.1, но сегодня я столкнулся с ошибкой, которую не могу решить. После переписывания класса «AccountManager» класс _signInManager.PasswordSignInAsyn c () начинает выдавать ошибку, связанную с Json циклом объекта.
Исключение:
((System.Text. Json .JsonException) ex). Сообщение: Обнаружен возможный цикл объекта, который не поддерживается. Это может быть связано с циклом или если глубина объекта превышает максимально допустимую глубину 32.
Пример использования:
public class AccountManager : IAccountManager{
public ApplicationUser ActualUser { get; private set; }
private readonly SignInManager<ApplicationUser> _signInManager;
public AccountManager(SignInManager<ApplicationUser> signInManager)
{
_signInManager = signInManager;
}
public async Task<LoginResponseDTO> LoginAsync(LoginRequestDTO input)
{
var result = await _signInManager.PasswordSignInAsync(input.Email, input.Password, false, true);
...
}
}
Запуск:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
...
var builder = services.AddIdentityCore<ApplicationUser>(u =>
{
...
})
.AddEntityFrameworkStores<RBDbContext>().AddDefaultTokenProviders()
.AddSignInManager<UserManager<ApplicationUser>>()
.AddUserManager<UserManager<ApplicationUser>>();
builder.AddEntityFrameworkStores<RBDbContext>().AddDefaultTokenProviders();
services.AddScoped<IAccountManager,AccountManager>();
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
Я даже пытался использовать атрибут пользователя и других классов [JsonIgnore], но это не сработало. Пользовательский класс приложения:
public class ApplicationUser : IdentityUser
{
public string Avatar { get; set; }
...
[JsonIgnore]
public virtual ICollection<Order> Orders{ get; set; }
[JsonIgnore]
public virtual ICollection<Participation> Participations{ get; set; }
[JsonIgnore]
public virtual ICollection<UserProduct> UserProducts{ get; set; }
}
UserManager поставляется из Microsoft.Extensions.Identity.Core, версия = 3.1.2.0