У меня есть контроллер ProductsController:
using Microsoft.AspNetCore.Mvc;
using WebApp.Models;
namespace WebApp.Controllers
{
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private DataContext context;
public ProductsController(DataContext ctx)
{
context = ctx;
}
[HttpGet]
public IEnumerable<Product> GetProducts()
{
return context.Products;
}
[HttpGet("{id}")]
public Product? GetProduct([FromServices]
ILogger<ProductsController> logger)
{
logger.LogDebug("GetProduct Action Invoked");
return context.Products.FirstOrDefault();
}
}
}
Есть класс Program:
using Microsoft.EntityFrameworkCore;
using WebApp.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<DataContext>(opts =>
{
opts.UseSqlServer(builder.Configuration["ConnectionStrings:ProductConnection"]);
opts.EnableSensitiveDataLogging(true);
});
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.MapGet("/", () => "Hello World!");
var context = app.Services.CreateScope().ServiceProvider.GetRequiredService<DataContext>();
SeedData.SeedDatabase(context);
app.Run();
И настройки appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ProductConnection": "Server=(localdb)\\MSSQLLocalDB;Database=Products;MultipleActiveResultSets=True"
}
}
При обработке запроса
localhost:5000/api/products/1, и в консоли должно появиться dbug: WebApp.Controllers.ProductsController[0]
GetProduct Action Invoked
по факту контроллер отрабатывает без ошибок, но в консоли нету такого сообщения
UPD
[HttpGet("{id}")]
public Product? GetProduct(long id, [FromServices]ILogger<ProductsController> logger)
{
logger.LogDebug("GetProduct Action Invoked");
return context.Products.Find(id);
}
Часть кода которая отвечает за вывод сообщения в консоль