Делаю проект на asp.core, пытаюсь добавить локализацию через cookie, но добавление в куки не проходит.
Через параметры в get работает.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddControllersWithViews()
.AddViewLocalization()
.AddNewtonsoftJson();
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("ru")
};
options.DefaultRequestCulture = new RequestCulture("ru");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<IdentityOptions>(options =>
{
options.User.RequireUniqueEmail = true;
options.Password.RequireNonAlphanumeric = false;
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(2);
options.Lockout.MaxFailedAccessAttempts = 3;
options.Lockout.AllowedForNewUsers = true;
});
#if (DEBUG)
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql("*"));
#endif
#if (RELEASE)
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySQL("*"));
#endif
services.AddDefaultIdentity<ApplicationUser>()
.AddErrorDescriber<CustomIdentityErrorDescriber>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddDistributedMemoryCache();
services.AddTransient<IEmailSender, EmailService>();
services.AddMvc()
.AddNewtonsoftJson()
.AddXmlFormaterExtensions();
services.AddControllers().AddJsonOptions(options =>
{
// Use the default property (Pascal) casing.
options.JsonSerializerOptions.PropertyNamingPolicy = null;
// Configure a custom converter.
//options.JsonSerializerOptions.Converters.Add(new MyCustomJsonConverter());
});
services.AddSession(options =>
{
options.Cookie.IsEssential = true;
});
// services.AddCookie(); не работает пишет, что services не содержит AddCokkie
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest);
}
//This method gets called by the runtime.Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/StatusCode/{0}");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseSession();
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("ru")
};
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
app.UseCors(builder => builder.AllowAnyOrigin());
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}");
});
}
А вот так добавляю cookie:
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);