Несколько дней назад я решил переписать старый проект API с .net core 2.0 на 3.1, но сегодня я столкнулся с ошибкой, которую не могу решить. После перезаписи AccountManager класс _signInManager.PasswordSignInAsync () начинает выдавать ошибку, связанную с циклом объекта Json.
Исключение:
((System.Text.Json.JsonException) ex) .Message: обнаружен возможный цикл объекта, который не поддерживается. Это может происходить либо из-за цикла, либо из-за того, что глубина объекта превышает максимально допустимую глубину 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, Version = 3.1.2.0.