ASP.NET Core Reference & Cheatsheet
DodaTech
Updated 2026-06-06
2 min read
In this tutorial, you'll learn about ASP.NET Core Reference & Cheatsheet. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
Learning Path
flowchart LR
A["Aspnet Overview"] --> B["Core Concepts"]
B --> C["Intermediate Topics"]
C --> D["Advanced Topics"]
D --> E["Practical Applications"]
A --> F["You Are Here"]
style F fill:#f90,color:#fff
A comprehensive reference for ASP.NET Core development — middleware pipeline, DI patterns, Entity Framework Core, controller conventions, and security best practices.
Program.cs Setup
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Controller Example
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly AppDbContext _db;
public ProductsController(AppDbContext db)
{
_db = db;
}
[HttpGet]
public async Task<ActionResult<List<Product>>> GetAll()
{
return await _db.Products.ToListAsync();
}
[HttpGet("{id}")]
public async Task<ActionResult<Product>> GetById(int id)
{
var product = await _db.Products.FindAsync(id);
if (product == null) return NotFound();
return product;
}
[HttpPost]
public async Task<ActionResult<Product>> Create(Product product)
{
_db.Products.Add(product);
await _db.SaveChangesAsync();
return CreatedAtAction(nameof(GetById), new { id = product.Id }, product);
}
}
Entity Framework Core
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.Property(p => p.Price)
.HasPrecision(18, 2);
}
}
Middleware Pipeline Order
- Exception Handling (
UseExceptionHandler) - HTTPS redirection (
UseHttpsRedirection) - Static files (
UseStaticFiles) - Routing (
UseRouting) - CORS (
UseCors) - Authentication (
UseAuthentication) - Authorization (
UseAuthorization) - Endpoints (
MapControllers)
Dependency Injection
// Service lifetimes
builder.Services.AddScoped<IProductService, ProductService>(); // Per request
builder.Services.AddSingleton<ICacheService, MemoryCacheService>(); // Single instance
builder.Services.AddTransient<IEmailService, EmailService>(); // New each time
// Constructor injection
public class ProductService : IProductService
{
private readonly AppDbContext _db;
private readonly ILogger<ProductService> _logger;
public ProductService(AppDbContext db, ILogger<ProductService> logger)
{
_db = db;
_logger = logger;
}
}
Common Configurations
// CORS
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowFrontend", policy =>
policy.WithOrigins("https://myapp.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
// JWT Authentication
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
};
});
Common Mistakes
- Assuming all features work identically — always check browser/version compatibility.
- Skipping documentation — reference docs exist for a reason; consult them.
- Not testing edge cases — your setup may differ from tutorials.
- Overlooking security — always validate inputs and follow best practices.
- Copy-pasting without understanding — type code yourself to build real knowledge.
What's Next
| Lesson | Description |
|---|---|
| {{< ref "../nodejs/express.md" >}} | Express.js framework |
| {{< ref "../ror/reference.md" >}} | Ruby on Rails reference |
| C# | C# programming language |
| .NET | .NET platform overview |
| Entity Framework | EF Core deep dive |
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro