Это ошибка или я что-то упустил? - PullRequest
0 голосов
/ 22 сентября 2019

Я только начал локализовать свое приложение .net core 2.2, и я ищу способ получения культур из базы данных SQL.Я пытался настроить объект локализации запроса в методе Configure при запуске с помощью кода

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IStringLocalizerFactory localizerFactory)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseStatusCodePagesWithReExecute("/Error/{0}");
        }

        string defaultCulture = null;
        var supportedCultures = new List<CultureInfo>();
        using (var scope = app.ApplicationServices.CreateScope())
        {
            var db = scope.ServiceProvider.GetService<IRepository<Language>>();
            defaultCulture = db.FindBy(c => c.IsSelected).FirstOrDefault().Code;
            var langs = db.GetAll().ToList();
            foreach (var item in langs)
            {
                CultureInfo ci = new CultureInfo(item.Code);
                supportedCultures.Add(ci);
            }
        }

        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture(defaultCulture),
            SupportedCultures = supportedCultures,
            SupportedUICultures = supportedCultures
        });

        app.UseStaticFiles();
        app.UseCookiePolicy();
        app.UseSession();
        app.UseAuthentication();

        app.UseMvc();
    }

Я установил точку останова для кода и вижу, что культуры возвращают 4 элемента, но только один добавлен в SupportedCulturesВ то же время, тот же код в ConfigureServices, работает нормально.Код, который я использую в службе Configure:

services.Configure<RequestLocalizationOptions>(options =>
        {
            var scopeFactory = services
                .BuildServiceProvider()
                .GetRequiredService<IServiceScopeFactory>();
            string defaultCulture = null;
            List<CultureInfo> cultures = new List<CultureInfo>();
            using (var scope = scopeFactory.CreateScope())
            {
                var db = scope.ServiceProvider.GetRequiredService<IRepository<Language>>();
                var langs = db.GetAll().ToList();
                foreach (var item in langs)
                {
                    CultureInfo ci = new CultureInfo(item.Code);
                    cultures.Add(ci);
                }
                defaultCulture = db.FindBy(c => c.IsSelected).FirstOrDefault().Code;
            }
            options.DefaultRequestCulture = new RequestCulture("en-US");
            options.SupportedCultures = cultures;
            options.SupportedUICultures = cultures;
        });
    }

Есть ли ошибка в моем подходе с использованием кода в методе Configure ????

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...