public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}
}
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello, ASP.NET Core!");
app.Run();
public interface IMyService
{
string GetData();
}
public class MyService : IMyService
{
public string GetData() => "Hello from MyService";
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped();
services.AddControllers();
}
}
public class MyController : ControllerBase
{
private readonly IMyService _service;
public MyController(IMyService service)
{
_service = service;
}
[HttpGet]
public IActionResult Get() => Ok(_service.GetData());
}
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
return Ok($"Product {id}");
}
}
// Minimal API
app.MapGet("/products/{id}", (int id) => $"Product {id}");
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Before\n");
await next();
await context.Response.WriteAsync("After\n");
});
app.Run(async context => await context.Response.WriteAsync("Hello\n"));
app.Run();
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient();
services.AddScoped();
services.AddSingleton();
}
{
"MySettings": {
"ApiKey": "my-secret-key"
}
}
public class UserModel
{
public string Name { get; set; }
}
public class UserController : ControllerBase
{
[HttpPost]
public IActionResult Create([FromBody] UserModel model)
{
return Ok($"Created user: {model.Name}");
}
}
public class MyController : ControllerBase
{
private readonly IConfiguration _config;
public MyController(IConfiguration config)
{
_config = config;
}
[HttpGet]
public IActionResult Get()
{
var apiKey = _config["MySettings:ApiKey"];
return Ok(apiKey);
}
}
// Options Pattern
public class MySettings
{
public string ApiKey { get; set; }
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure(Configuration.GetSection("MySettings"));
}
public class MyController : ControllerBase
{
private readonly MySettings _settings;
public MyController(IOptions options)
{
_settings = options.Value;
}
[HttpGet]
public IActionResult Get() => Ok(_settings.ApiKey);
}
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped();
}
@model MyModel
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
var data = new { Name = "Test", Id = 1 };
return Ok(data); // Returns JSON
}
}
public class MyController : ControllerBase
{
[HttpGet]
public ActionResult Get()
{
return "Hello"; // ActionResult
}
[HttpGet("other")]
public IActionResult GetOther()
{
return Ok("Hello"); // IActionResult
}
}
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var error = context.Features.Get();
await context.Response.WriteAsync($"Error: {error.Error.Message}");
});
});
// Filter
public class CustomExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
context.Result = new ObjectResult("Error occurred")
{
StatusCode = 500
};
context.ExceptionHandled = true;
}
}
app.UseStaticFiles();
public class LogFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
Console.WriteLine("Before action");
}
public void OnActionExecuted(ActionExecutedContext context)
{
Console.WriteLine("After action");
}
}
[LogFilter]
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get() => Ok("Test");
}
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel();
var app = builder.Build();
app.Run();
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddScoped();
var app = builder.Build();
app.UseRouting();
app.MapControllers();
app.Run();
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowAll");
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}