Startup.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Hosting;
  3. using Microsoft.AspNetCore.HttpsPolicy;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Hosting;
  7. using Microsoft.Extensions.Options;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Globalization;
  11. using System.Linq;
  12. using System.Threading.Tasks;
  13. namespace WebChallenge
  14. {
  15. public class Startup
  16. {
  17. public Startup(IConfiguration configuration)
  18. {
  19. Configuration = configuration;
  20. }
  21. public IConfiguration Configuration { get; }
  22. // This method gets called by the runtime. Use this method to add services to the container.
  23. public void ConfigureServices(IServiceCollection services)
  24. {
  25. //services.AddSession();
  26. services.AddControllersWithViews();
  27. // multilanguage
  28. services.AddLocalization(options => options.ResourcesPath = "Resources");
  29. services.AddMvc()
  30. .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
  31. .AddDataAnnotationsLocalization();
  32. services.Configure<RequestLocalizationOptions>(options =>
  33. {
  34. var cultures = new List<CultureInfo> {
  35. new CultureInfo("en"),
  36. new CultureInfo("fr")
  37. };
  38. options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("fr");
  39. options.SupportedCultures = cultures;
  40. options.SupportedUICultures = cultures;
  41. });
  42. services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
  43. services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of IDistributedCache
  44. services.AddSession(options =>
  45. {
  46. options.IdleTimeout = TimeSpan.FromSeconds(600);
  47. options.Cookie.HttpOnly = true;
  48. options.Cookie.IsEssential = true;
  49. //options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
  50. });
  51. }
  52. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  53. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  54. {
  55. if (env.IsDevelopment())
  56. {
  57. app.UseDeveloperExceptionPage();
  58. }
  59. else
  60. {
  61. app.UseExceptionHandler("/Home/Error");
  62. // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  63. app.UseHsts();
  64. }
  65. app.UseSession();
  66. app.UseCookiePolicy();
  67. app.UseHttpsRedirection();
  68. app.UseDefaultFiles();
  69. app.UseStaticFiles();
  70. app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
  71. app.UseRouting();
  72. app.UseAuthorization();
  73. app.UseEndpoints(endpoints =>
  74. {
  75. endpoints.MapControllerRoute(
  76. name: "default",
  77. pattern: "{controller=Home}/{action=Start}/{id?}");
  78. });
  79. }
  80. }
  81. }