2 years ago
#60359
rusnakvlad
Why AppDbContext constructor is not invoked?
I am writing an api using aspnet identity, on configuring services I use .AddDbContext methdos but nothing happens. The construcotr of AppDBContext is not invoked. I set a breakpoint in AppDBContext to ckeck if it is called but constructor is not invoked. Here is my dbcontext
public class AppDBContext : IdentityDbContext<ApplicationUser>
{
public AppDBContext(DbContextOptions<AppDBContext> options) : base (options)
{
Database.EnsureDeleted();
Database.EnsureCreated();
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
And Program.cs with configuration
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("Default");
// Add services to the container.
builder.Services.AddControllers();
// For Entity Framework
builder.Services.AddDbContext<AppDBContext>(options => options.UseSqlServer(connectionString));
#region AUTHENTICATION
// For Identity
builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<AppDBContext>()
.AddDefaultTokenProviders();
// Adding Authentication
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
// Adding Jwt Bearer
.AddJwtBearer(options => {
options.SaveToken = true;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
{
ValidateIssuer = false,
ValidateAudience = false,
ValidAudience = builder.Configuration["JWT:ValidAudience"],
ValidIssuer = builder.Configuration["JWT:ValidIssuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["JWT:Secret"]))
};
});
#endregion
#region REPOSITORIES
builder.Services.AddTransient<IAuthRepository, AuthRepository>();
#endregion
builder.Services.AddTransient<IUnitOfWork, UnitOfWork>();
#region SERVICES
builder.Services.AddTransient<IAuthService, AuthService>();
#endregion
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
PS:connectionString is right(checked in debug)
c#
asp.net
asp.net-identity
database-connection
dbcontext
0 Answers
Your Answer