hn-20-2/Apps/Website/Startup.cs
2021-04-27 12:28:42 +02:00

100 lines
3.1 KiB
C#

using Application;
using Domain;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Website
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var link1 = new Domain.Link("http://default.website");
var link2 = new Domain.Link("http://another.website");
var link3 = new Domain.Link("http://a.final.website");
services.AddSingleton<ILinkRepository>(new Infrastructure.Repositories.Memory.LinkRepository(
link1,
link2,
link3
));
services.AddSingleton<ICommentRepository>(new Infrastructure.Repositories.Memory.CommentRepository(
link1.AddComment("my first comment"),
link3.AddComment("another comment")
));
services.AddSingleton<IData>(serviceProvider =>
{
var memoryLinkRepository = serviceProvider.GetRequiredService<ILinkRepository>() as Infrastructure.Repositories.Memory.LinkRepository;
var memoryCommentRepository = serviceProvider.GetRequiredService<ICommentRepository>() as Infrastructure.Repositories.Memory.CommentRepository;
return new Infrastructure.Repositories.Memory.Data(memoryLinkRepository, memoryCommentRepository);
});
services.AddTransient<LinkService>();
services.AddTransient<CommentService>();
services.AddControllersWithViews(options =>
{
options.Filters.Add<CustomExceptionFilter>();
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// app.Use(async (context, next) =>
// {
// try
// {
// await next();
// }
// catch (Exception e)
// {
// context.Response.Redirect("/Error");
// }
// });
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStatusCodePagesWithRedirects("/Status/{0}");
app.UseStaticFiles();
app.UseRouting();
// app.Use(async (context, next) =>
// {
// Console.WriteLine(">>> Hey");
// await next();
// Console.WriteLine("<<< Ho");
// });
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Links}/{action=Index}/{id?}");
});
}
}
}