ASP.NET Core项目在空闲后返回错误的本地化

时间:2018-03-19 11:22:06

标签: c# asp.net asp.net-core localization asp.net-core-localization

我的本​​地化工作正常,但如果网站闲置约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

感谢任何花时间思考这个问题的人!

0 个答案:

没有答案