J'ai une application ASP.Net Core 3.1 avec le fichier startup.cs suivant (j'ai essayé diverses combinaisons de la configuration ci-dessous en me basant sur des recherches sur Internet) :
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<RequestLocalizationOptions>(options =>
{
options.RequestCultureProviders = new[] { new CookieRequestCultureProvider() };
});
y
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
Et dans la méthode d'ouverture de session de mon application, je règle le cookie culturel comme suit :
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture([logged-in-user].CultureCode)));
Lors des demandes suivantes, je peux voir le cookie dans l'onglet Réseau des outils de développement de mon navigateur :
Pourtant, sur le serveur, toute requête donnée conserve la culture par défaut du serveur (qui est en-ZA
) pour mon environnement de développement. (Je vois cela en vérifiant System.Threading.Thread.CurrentThread.CurrentCulture.Name
dans n'importe quel point d'arrêt dans les méthodes d'action de mon serveur)
Et je rencontre des problèmes de conversion de date entre mon client et mon serveur (par exemple le client avec en-US
selon la capture d'écran ci-dessus) envoie une date de 3/5/2009 (5 mars) au serveur, et le serveur l'interprète comme étant le 3 mai.
Pourquoi mon serveur n'honore-t-il pas le CultureCookie ? Que me manque-t-il ?