Lees de huidige url uit in ASP.Net Core
Hoe kan ik in ASP.NET Core de huidige url uitlezen in code?
Voeg onderstaande code toe in de Startup klasse:
public void ConfigureServices(IServiceCollection services)
{
services.AddRouting(options => options.LowercaseUrls = true);
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddHttpContextAccessor(); // Add this one
...
}
Injecteer de IHttpContextAccessor in de constructor van je klasse waarin je de huidige URL wenst uit te lezen:
public class BlogService : IBlogService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public BlogService(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
}
Daarna lees je de Scheme en Host.Value properties uit:
private string GenerateUrl(string slug)
{
return $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host.Value}/blog/{slug}";
}
In het geval van de link naar dit blogbericht zou volgende string gegenereerd worden in de GenerateUrl
methode: https://localhost:5001/blog/urls-in-asp-net-core-met-kleine-letters-in-plaats-van-hoofdletters
_httpContextAccessor.HttpContext.Request.Scheme
leest het schema uit, wat meestal https zal zijn.
_httpContextAccessor.HttpContext.Request.Host.Value
leest het adres (inclusief poortnummer) uit, wat tijdens de developing meestal localhost:5001 zal zijn. Maar dit kan even goed www.eenofanderesite.be zijn als waarde.