Boxed.AspNetCore.md
November 22, 2021 ยท View on GitHub

Boxed.AspNetCore
Provides ASP.NET Core middleware, MVC filters, extension methods and helper code for an ASP.NET Core project.
Fluent Interface Extensions
ILoggingBuilder Extensions
loggingBuilder
.AddIfElse(
hostingEnvironment.IsDevelopment(),
x => x.AddConsole(...).AddDebug(),
x => x.AddSerilog(...));
IConfiguration Extensions
this.configuration = new ConfigurationBuilder()
.SetBasePath(hostingEnvironment.ContentRootPath)
.AddJsonFile("config.json")
.AddJsonFile($"config.{hostingEnvironment.EnvironmentName}.json", optional: true)
.AddIf(
hostingEnvironment.IsDevelopment(),
x => x.AddUserSecrets())
.AddEnvironmentVariables()
.AddApplicationInsightsSettings(developerMode: !hostingEnvironment.IsProduction())
.Build();
IApplicationBuilder Extensions
application
.UseIfElse(
environment.IsDevelopment(),
x => x.UseDeveloperExceptionPage(),
x => x.UseStatusCodePagesWithReExecute("/error/{0}/"))
.UseIf(
environment.IsStaging(),
x => x.UseStagingSpecificMiddleware())
.UseStaticFiles()
.UseMvc();
SEO Friendly URL's
[HttpGet("product/{id}/{title}", Name = "GetProduct")]
public IActionResult GetProduct(int id, string title)
{
var product = this.productRepository.Find(id);
if (product == null)
{
return this.NotFound();
}
// Get the actual friendly version of the title.
string friendlyTitle = FriendlyUrlHelper.GetFriendlyTitle(product.Title);
// Compare the title with the friendly title.
if (!string.Equals(friendlyTitle, title, StringComparison.Ordinal))
{
// If the title is null, empty or does not match the friendly title, return a 301 Permanent
// Redirect to the correct friendly URL.
return this.RedirectToRoutePermanent("GetProduct", new { id = id, title = friendlyTitle });
}
// The URL the client has browsed to is correct, show them the view containing the product.
return this.View(product);
}