我的本地化工作正常,但如果网站闲置约15分钟,则下一页加载始终返回英文。所以我加载一个页面,语言是正确的,保留15分钟,刷新,它是英语。第二次刷新或更改页面会将其修复,直到再次处于空闲状态。
在本地开发和使用visual studio运行以及在服务器上的IIS上部署时都会发生这种情况。我试图从服务器中搜索所有待机/休眠设置等,以确保但是没有用。
我已经检查过文化cookie设置正确,并且每次加载页面都会发送。
本地化按照asp.net核心文档中的描述完成。
知道这可能与什么有关吗?
编辑:
要说清楚,我主要使用View Localization。
像这样:
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<h2>@ViewData["Title"].</h2>
在Startup.cs中,我有以下内容:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
services.Configure<RequestLocalizationOptions>(options =>
{
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("fi-FI"),
new CultureInfo("en-US") // Even if I comment this line, the problem still occurs
};
options.DefaultRequestCulture = new RequestCulture(culture: "fi-FI", uiCulture: "fi-FI");
// Formatting numbers, dates, etc.
options.SupportedCultures = supportedCultures;
// UI strings that we have localized.
options.SupportedUICultures = supportedCultures;
});
在Configure方法中:
IOptions<RequestLocalizationOptions> locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
在控制器中,这是我用来让用户改变语言的方法。
public IActionResult SetLanguage(string culture, string returnUrl)
{
_logger.LogInformation("Setting language to " + culture);
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}
这很有效。除了描述的行为。如果出现问题我就不能走远了。我希望:D
感谢任何花时间思考这个问题的人!