Пример #1
0
        private RequestLocalizationOptions GetRequestLocalizationOptions(string defaultLang)
        {
            var arSACulture = new CultureInfo("ar")
            {
                DateTimeFormat = new CultureInfo("en").DateTimeFormat
            };

            var supportedCultures = new[]
            {
                new CultureInfo("en"),
                arSACulture
            };

            var options = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(defaultLang),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            var requestProvider = new RouteDataRequestCultureProvider();

            options.RequestCultureProviders.Insert(0, requestProvider);
            return(options);
        }
Пример #2
0
    public static void ConfigureCustomMvcRouting(this IApplicationBuilder app)
    {
        app.UseRouter(routes =>
        {
            //api/{culture=en}/{*mvcRoute}
            routes.MapMiddlewareRoute("api/{culture=en}/{*mvcRoute}", subApp =>
            {
                var supportedCultures = new[]
                {
                    new CultureInfo("en"),
                    new CultureInfo("ru"),
                };

                var localizationOptions = new RequestLocalizationOptions
                {
                    DefaultRequestCulture = new RequestCulture("en"),
                    SupportedCultures     = supportedCultures,
                    SupportedUICultures   = supportedCultures
                };

                var requestProvider = new RouteDataRequestCultureProvider();

                localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

                subApp.UseRequestLocalization(localizationOptions);

                subApp.UseMvcWithDefaultRoute();
            });
        });
    }
Пример #3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostEnvironment env)
        {
            if (env.EnvironmentName == "Development")
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseCookiePolicy();
            app.UseRequestLocalization();
            app.UseStaticFiles();
            app.UseRouting();

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en"),
                new CultureInfo("fr"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            //app.UseEndpoints(endpoints =>
            //{
            //    //endpoints.MapRazorPages();
            //    endpoints.MapControllerRoute("default", "{culture=en}/{controller=Home}/{action=Index}/{id?}");
            //});

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);
                    subApp.UseRouting();
                    subApp.UseEndpoints(mvcRoutes =>
                    {
                        mvcRoutes.MapControllerRoute("default", "{culture=en}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });

            //https://forums.asp.net/t/2159027.aspx?How+can+I+use+globalization+and+localization+in+net+core+3+0+preview8+
        }
        public RedirectUnsupportedCultures(IOptions <RequestLocalizationOptions> options)
        {
            RouteDataRequestCultureProvider provider = options.Value.RequestCultureProviders
                                                       .OfType <RouteDataRequestCultureProvider>()
                                                       .First();

            _cultureItems = options.Value.SupportedUICultures;

            _cultureRouteKey = provider.RouteDataStringKey;
        }
Пример #5
0
        // 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");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            //--------------------------------------------------------------------------
            //RequestLocationOptions, especificando as culturas suportadas
            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("pt-BR"),
                new CultureInfo("en-US")
            };

            var opcoesDeCulturas = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("pt-BR"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            var requestProvider = new RouteDataRequestCultureProvider();

            opcoesDeCulturas.RequestCultureProviders.Insert(0, requestProvider);

            //--------------------------------------------------------------------------

            app.UseRequestLocalization(opcoesDeCulturas);
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=pt-BR}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(opcoesDeCulturas);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=pt-BR}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
        }
Пример #6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            // get the current directory to store the logs
            var path = Directory.GetCurrentDirectory();

            // get the file name from configuration file
            loggerFactory.AddFile($"{path}\\Logs\\{Configuration.GetValue<string>("LogFileName")}");
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            // use the swagger middleware
            app.UseSwagger();
            app.UseSwaggerUI(options => options.SwaggerEndpoint("/swagger/v1/swagger.json", "Hahn Services"));
            // include the routing middleware
            app.UseRouting();
            // include the cors middleware
            app.UseCors();
            // include the authentication middleware
            app.UseAuthorization();
            // use for routing end points
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
            //Add our new middleware to the pipeline
            app.UseMiddleware <RequestResponseLoggingMiddleware>();
            // Add the middleware the handle the exception at global level
            app.UseGlobalExceptionMiddleware();

            #region Localization
            // define the supported cultures
            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en-US"),
                new CultureInfo("de-DE")
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(culture: Configuration.GetValue <string>("DefaultCulture"), uiCulture: Configuration.GetValue <string>("DefaultCulture")),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            // app.UseRequestLocalization(localizationOptions);

            var requestProvider = new RouteDataRequestCultureProvider();
            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
            var locOptions = app.ApplicationServices.GetService <IOptions <RequestLocalizationOptions> >();
            // use the localization middleware
            app.UseRequestLocalization(locOptions.Value);

            #endregion
        }
Пример #7
0
        // 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.UseBrowserLink();
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseHsts();
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseAuthentication();

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en-US"),
                new CultureInfo("pl-PL"),
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("pl-PL"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=pl-PL}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=pl-PL}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });

            if (!CurrentEnvironment.IsEnvironment("Testing") && !CurrentEnvironment.IsEnvironment("SingleTest"))
            {
                RolesData.SeedRoles(app.ApplicationServices, Configuration).Wait();
            }
        }
Пример #8
0
        // 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.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();
            var supportedCultures = new[]
            {
                new CultureInfo("en-US"),
                new CultureInfo("vi-VD"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en-US"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en-US}/{controller=RegisterViews}/{action=Create}/{id?}");
                    });
                });
            });
            //app.UseMvc(routes =>
            //{
            //    routes.MapRoute(
            //        name: "default",
            //        template: "{controller=RegisterViews}/{action=Create}/{id?}");
            //});
        }
Пример #9
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var locOptions = app.ApplicationServices.GetService <IOptions <RequestLocalizationOptions> >();

            app.UseRequestLocalization(locOptions.Value);

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

            app.UseStaticFiles();

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en"),
                new CultureInfo("fr"),
                new CultureInfo("es"),
                new CultureInfo("cs"),
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
        }
Пример #10
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseCookiePolicy();
            app.UseRequestLocalization();
            app.UseStaticFiles();
            app.UseRouting();

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en"),
                new CultureInfo("fr"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);
                    subApp.UseRouting();
                    subApp.UseEndpoints(mvcRoutes =>
                    {
                        mvcRoutes.MapControllerRoute("default", "{culture=en}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
        }
Пример #11
0
        // 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();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseStatusCodePagesWithReExecute("/Error/{0}");
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseAuthentication();

            var supportedCultures = Languages.SupportedCultures;

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
        }
Пример #12
0
        // 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();
            }

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en"),
                new CultureInfo("ar"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                // This is the fallback that is used if we can't figure out which one should be used
                DefaultRequestCulture = new RequestCulture("en"),
                SupportedCultures     = supportedCultures, // used for number and date formats etc
                SupportedUICultures   = supportedCultures  // used for looking up translations from resource files.
            };

            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                // below will add support to lang in URL (/ar-SA/..)
                routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
                {
                    //The middleware adds 3 providers for the request culture by default:
                    //    QueryStringRequestCultureProvider: Gets the culture from query string values
                    //    CookieRequestCultureProvider: Gets the culture from a cookie
                    //    AcceptLanguageHeaderRequestCultureProvider: Gets the culture from the Accept-Language request header
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en-US}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });

            app.UseMvc();
        }
        public static void UseCustomRouteRequestLocalizationProvider(
            this IApplicationBuilder applicationBuilder,
            IOptionsMonitor <LocalizationSettings> localizationConfiguration)
        {
            const int First = 0;

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(localizationConfiguration.CurrentValue.DefaultCulture),
                SupportedCultures     = GetSupportedCultures(localizationConfiguration.CurrentValue.SupportedCultures),
                SupportedUICultures   = GetSupportedCultures(localizationConfiguration.CurrentValue.SupportedCultures)
            };

            var routeRequestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(First, routeRequestProvider);

            applicationBuilder.UseRequestLocalization(localizationOptions);
        }
Пример #14
0
 // This method gets called by the runtime. Use this method to add services to the container.
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddJsonFileLocalization();
     services.Configure <JsonLocalizationOptions>(opt =>
     {
         opt.CultureSuffixStrategy = CultureSuffixStrategy.TwoLetterISO6391;
         opt.ResourceRelativePath  = "CustomResourcesFolder";
         opt.WatchForChanges       = true;
     });
     services.Configure <RequestLocalizationOptions>(opts =>
     {
         var supportedCultures = new List <CultureInfo>
         {
             new CultureInfo("en"),
             new CultureInfo("ru")
         };
         opts.FallBackToParentCultures   = false;
         opts.FallBackToParentUICultures = false;
         opts.DefaultRequestCulture      = new RequestCulture("en");
         // Formatting numbers, dates, etc.
         opts.SupportedCultures = supportedCultures;
         // UI strings that we have localized.
         opts.SupportedUICultures = supportedCultures;
         var routeDataProvider    = new RouteDataRequestCultureProvider()
         {
             Options              = opts,
             RouteDataStringKey   = "lang",
             UIRouteDataStringKey = "lang"
         };
         opts.RequestCultureProviders.Clear();
         opts.RequestCultureProviders.Insert(0, routeDataProvider);
     });
     services.Configure <RouteOptions>(options =>
     {
         options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
     });
     services.AddRouting(x => x.LowercaseUrls = true);
     services
     .AddMvc(opts => opts.Filters.Add(new MiddlewareFilterAttribute(typeof(LocalizationPipeline))))
     .AddDataAnnotationsLocalization();
     services.AddSingleton <IValidationAttributeAdapterProvider, LocalizedValidationAttributeAdapterProvider>();
 }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <OnlineTicketingSystemCoreContext>(options =>
                                                                     options.UseSqlServer(Configuration.GetConnectionString("OnlineTicketingSystemCore")));

            //services.AddControllersWithViews();

            services.AddLocalization(options => options.ResourcesPath = "Resources");
            services.AddMvc().AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) =>
                                                          factory.Create(typeof(Language));
            });

            services.Configure <RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new[]
                {
                    new CultureInfo("en"),
                    new CultureInfo("fr")
                };

                options.DefaultRequestCulture = new RequestCulture("en");
                options.SupportedCultures     = supportedCultures;
                options.SupportedUICultures   = supportedCultures;

                var provider = new RouteDataRequestCultureProvider();
                provider.RouteDataStringKey   = "lang";
                provider.UIRouteDataStringKey = "lang";
                provider.Options = options;

                options.RequestCultureProviders = new[] { provider };
            });

            services.Configure <RouteOptions>(options =>
            {
                options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
            });

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
        }
Пример #16
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // --> localization and route translation
            services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Latest);
            services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });
            services.AddMvc()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, opts => { opts.ResourcesPath = "Resources"; })
            .AddDataAnnotationsLocalization();
            services.Configure <RequestLocalizationOptions>(options =>
            {
                var supportedCultures     = new List <CultureInfo>();
                var defaultRequestCulture = Configuration.GetSection("AppSettings:DefaultRequestCulture").Value;
                var cultureSettings       = Configuration.GetSection("AppSettings:SupportedCultures").Value?.Split(new[] { ',' }).ToList();
                cultureSettings.ForEach(delegate(string culture)
                {
                    supportedCultures.Add(new CultureInfo(culture));
                });

                options.DefaultRequestCulture = new RequestCulture(culture: defaultRequestCulture, uiCulture: defaultRequestCulture); // en
                options.SupportedCultures     = supportedCultures;
                options.SupportedUICultures   = supportedCultures;

                var requestProvider = new RouteDataRequestCultureProvider()
                {
                    Options = options
                };
                options.RequestCultureProviders.Insert(0, requestProvider);
            });
            services.AddSingleton <IActionContextAccessor, ActionContextAccessor>();
            services.AddTransient <TranslationRoute>();
            services.AddSingleton <TranslationTransformer>();
            // <--


            services.AddControllersWithViews();
        }
Пример #17
0
        // 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");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseResponseCaching();
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();
            app.UseAuthentication();

            var supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("tr-TR"),
                new CultureInfo("en-US"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures,
                DefaultRequestCulture = new RequestCulture("tr-TR"),
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);


            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=tr-TR}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=tr-TR}/{controller=Home}/{action=Index}/{id?}");

                        mvcRoutes.MapRoute(
                            name: "default2",
                            template: "{culture=tr-TR}/homepage",
                            defaults: new { controller = "Home", action = "Index" });

                        mvcRoutes.MapRoute(
                            name: "videoDefault",
                            template: "{culture=tr-TR}/videos",
                            defaults: new { controller = "Videos", action = "Index" });

                        mvcRoutes.MapRoute(
                            name: "episodeDefault",
                            template: "{culture=tr-TR}/videos/{id}/{title}",
                            defaults: new { controller = "Videos", action = "Episode" });

                        //mvcRoutes.MapRoute(
                        //       name: "episodeDefault",
                        //       template: "{culture=tr-TR}/episode/{id}",
                        //       defaults: new { controller = "Videos", action = "Episode" });

                        mvcRoutes.MapRoute(
                            name: "allEpisodeDefault",
                            template: "{culture=tr-TR}/videos/all",
                            defaults: new { controller = "Videos", action = "AllVideos" });
                    });
                });
            });
            //app.UseMvc();
        }
Пример #18
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            try
            {
                _services = services;

                _services.AddScoped <IEmailSender, AuthMessageSender>();
                _services.AddScoped <ISmsSender, AuthMessageSender>();
                _services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
                _services.AddSingleton <IActionContextAccessor, ActionContextAccessor>();

                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                _services.AddLogging(loggingBuilder =>
                                     loggingBuilder.AddSerilog(dispose: true));

                _services.AddOptions();
                _services.AddSingleton(typeof(IStringLocalizer), typeof(NccStringLocalizer <SharedResource>));
                _services.AddLocalization();

                _mvcBuilder = _services.AddMvc(config =>
                {
                    var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
                    config.Filters.Add(new AuthorizeFilter(policy));
                    config.CacheProfiles.Add(NccCacheProfile.Default,
                                             new CacheProfile()
                    {
                        VaryByHeader    = "User-Agent",
                        Duration        = 300,
                        VaryByQueryKeys = new string[] { "id", "name", "pageNumber", "page", "pageSize", "model", "lang", "status", "sessionId", "requestId", "start", "slug", }
                    });
                });

                _mvcBuilder.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
                _mvcBuilder.AddDataAnnotationsLocalization(options =>
                {
                    options.DataAnnotationLocalizerProvider = (type, factory) => new NccStringLocalizer <SharedResource>(factory, new HttpContextAccessor());
                });

                _services.AddMaintenance(() => _setupConfig.IsMaintenanceMode, Encoding.UTF8.GetBytes("<div style='width:100%;text-align:center; padding-top:10px;'><h1>" + _setupConfig.MaintenanceMessage + "</h1></div>"), "text/html", _setupConfig.MaintenanceDownTime * 60);

                _services.AddSession(options =>
                {
                    options.Cookie.Name     = ".DamaCoreCMS.Cookie.Session";
                    options.IdleTimeout     = TimeSpan.FromMinutes(20);
                    options.Cookie.HttpOnly = true;
                });

                _services.AddResponseCacheingAndCompression(_serviceProvider);

                _services.AddSingleton(Configuration);

                _services.AddNccCoreModuleServices();
                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                _services.SetGlobalCache(_serviceProvider);

                var themeFolder             = Path.Combine(_hostingEnvironment.ContentRootPath, NccInfo.ThemeFolder);
                var moduleFolder            = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ModuleFolder);
                var coreModuleFolder        = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.CoreModuleFolder);
                var themesDirectoryContents = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ThemeFolder);

                _themeManager.ScanThemeDirectory(themeFolder);
                _themeManager.RegisterThemes(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);

                var loggerFactory = _serviceProvider.GetService <ILoggerFactory>();
                var logger        = loggerFactory.CreateLogger <Startup>();

                _moduleManager.LoadModules(coreModuleFolder, logger);
                _moduleManager.LoadModules(moduleFolder, logger);

                _services.AddModuleDependencies(_mvcBuilder);

                if (SetupHelper.IsDbCreateComplete)
                {
                    _startup.SelectDatabase(_services);
                    _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);
                    _moduleManager.AddModulesAsApplicationPart(_mvcBuilder, _services, _serviceProvider, logger);

                    _moduleManager.AddModuleServices(_services, logger);
                    _moduleManager.AddModuleFilters(_services, logger);
                    _moduleManager.AddShortcodes(_services, logger);
                    _moduleManager.AddModuleWidgets(_services, logger);
                    _moduleManager.AddModuleAuthorizationHandlers(_services, logger);

                    _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                    _services.AddCustomizedIdentity(_serviceProvider.GetService <INccSettingsService>());
                    _moduleManager.LoadModuleMenus(logger);
                }

                var defaultCulture = new RequestCulture("en");

                if (SetupHelper.IsAdminCreateComplete)
                {
                    GlobalContext.SetupConfig = SetupHelper.LoadSetup();
                    defaultCulture            = new RequestCulture(GlobalContext.SetupConfig.Language);
                }

                _services.Configure <RouteOptions>(options =>
                {
                    options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
                });

                _services.Configure <RequestLocalizationOptions>(
                    opts =>
                {
                    var supportedCultures      = SupportedCultures.Cultures;
                    opts.DefaultRequestCulture = defaultCulture;
                    opts.SupportedCultures     = supportedCultures;
                    opts.SupportedUICultures   = supportedCultures;

                    var provider = new RouteDataRequestCultureProvider();
                    provider.RouteDataStringKey   = "lang";
                    provider.UIRouteDataStringKey = "lang";
                    provider.Options             = opts;
                    opts.RequestCultureProviders = new[] { provider };
                }
                    );

                _services.Configure <ClassLibraryLocalizationOptions>(
                    options => options.ResourcePaths = new Dictionary <string, string>
                {
                    { "DamaCoreCMS.Framework", "i18n/Resources" },
                    { "DamaCoreCMS.Web", "Resources" }
                }
                    );

                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);
                _serviceProvider = _services.BuildModules(ConfigurationRoot, _hostingEnvironment);

                if (SetupHelper.IsDbCreateComplete)
                {
                    _themeManager.RegisterThemeWidgets(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);
                    _moduleManager.RegisterModuleWidgets(_mvcBuilder, _services, _serviceProvider, logger);
                    _moduleManager.RegisterModuleFilters(_mvcBuilder, _serviceProvider, logger);
                    _moduleManager.RegisterModuleShortCodes(_mvcBuilder, _serviceProvider);
                }

                GlobalContext.ServiceProvider   = _serviceProvider;
                GlobalContext.Services          = _services;
                DamaCoreCMSHost.Mediator        = _serviceProvider.GetService <IMediator>();
                DamaCoreCMSHost.Services        = _services;
                DamaCoreCMSHost.ServiceProvider = _serviceProvider;
                GlobalMessageRegistry.LoadMessagesFromStorage();
            }
            catch (Exception ex)
            {
                _exceptions[ExceptionsOnConfigureServices].Add(ex);
            }
        }
Пример #19
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
            app.UseBrowserLink();


            //if (env.IsDevelopment())
            //{
            //    app.UseDeveloperExceptionPage();
            //    app.UseDatabaseErrorPage();
            //    app.UseBrowserLink();
            //}
            //else
            //{
            //    app.UseDeveloperExceptionPage();
            //    app.UseDatabaseErrorPage();
            //    app.UseBrowserLink();
            //    app.UseExceptionHandler("/" + DCI + "/Home/Error");
            //}
            app.UseHangfireServer();
            // app.UseHangfireDashboard();
            app.UseHangfireDashboard("/hangfire");
            app.UseRewriter(new RewriteOptions().AddRedirectToHttps(StatusCodes.Status301MovedPermanently, 443));


            app.UseStaticFiles();
            app.UseSession();

            //app.UseKendo(env);

            // Add external authentication middleware below. To configure them please see https://go.microsoft.com/fwlink/?LinkID=532715

            // UseAuthentication must be set before localization
            app.UseAuthentication();

            //   var context = new CustomAssemblyLoadContext();
            //   context.LoadUnmanagedLibrary(Path.Combine(env.WebRootPath, "DinkToPdf", "libwkhtmltox.dll"));

            // to add the request localization middleware
            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                //  new CultureInfo("ar"),
                new CultureInfo("ar-MA"),
                new CultureInfo("ar-DZ"),
                new CultureInfo("ar-TN"),
                new CultureInfo("ar-LY"),
                new CultureInfo("ar-EG"),
                new CultureInfo("ar-LB"),
                new CultureInfo("ar-JO"),
                new CultureInfo("ar-SY"),
                new CultureInfo("ar-IQ"),
                new CultureInfo("ar-KW"),
                new CultureInfo("ar-YE"),
                new CultureInfo("ar-OM"),
                new CultureInfo("ar-QA"),
                new CultureInfo("ar-AE"),
                new CultureInfo("ar-BH"),
                //  new CultureInfo("ar-SA"),
                new CultureInfo("ar-MR"),
                new CultureInfo("ar-SD"),
                new CultureInfo("ar-SO"),
                new CultureInfo("ar-DJ"),
                new CultureInfo("ar-KM"),
                new CultureInfo("en")
            };

            //var localizationOptions = new RequestLocalizationOptions
            //{
            //    DefaultRequestCulture = new RequestCulture(DCI),
            //    SupportedCultures = supportedCultures,
            //    SupportedUICultures = supportedCultures
            //};

            //var requestProvider = new RouteDataRequestCultureProvider
            //{
            //    Options = localizationOptions
            //};

            //localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            //app.UseRequestLocalization(localizationOptions);

            //app.UseRouter(routes =>
            //{
            //    routes.MapMiddlewareRoute("{culture=" + DCI + "}/{*mvcRoute}", subApp =>
            //    {
            //        subApp.UseRequestLocalization(localizationOptions);

            //        subApp.UseMvc(mvcRoutes =>
            //        {
            //            mvcRoutes.MapRoute(
            //                name: "default",
            //                template: "{culture=" + DCI + "}/{controller=Home}/{action=Index}/{id?}");
            //        });
            //    });
            //});

            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(DCI),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            var requestProvider = new RouteDataRequestCultureProvider
            {
                Options = localizationOptions
            };

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRequestLocalization(localizationOptions);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=" + DCI + "}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);



                    subApp.UseMvc(mvcRoutes =>
                    {
                        //                      mvcRoutes.MapRoute(
                        //name: "PostById",
                        //template: "{culture=" + DCI + "}/Post/{id:Guid}/{t}",
                        //defaults: new { controller = "Posts", action = "Details", t = String.Empty });

                        mvcRoutes.MapAreaRoute(
                            name: "messages",
                            areaName: "messages",
                            template: "{culture=" + DCI + "}/messages/{controller}/{action}/{id?}");



                        mvcRoutes.MapRoute(
                            name: "Blogs",
                            template: "{culture=" + DCI + "}/Blog/{id:int}/{keyword}",
                            defaults: new { controller = "Blogs", action = "Index", keyword = String.Empty });


                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=" + DCI + "}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "MyArea",
                    template: "{area:exists}/{controller}/{action}/{id?}");

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
Пример #20
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            _services = services;

            _services.AddLogging(loggingBuilder =>
                                 loggingBuilder.AddSerilog(dispose: true));

            _services.AddOptions();
            //services.AddSingleton(typeof(IStringLocalizerFactory), typeof(ClassLibraryStringLocalizerFactory));
            services.AddSingleton(typeof(IStringLocalizer), typeof(NccStringLocalizer <SharedResource>));

            _services.AddLocalization();

            _mvcBuilder = services.AddMvc();
            _mvcBuilder.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
            _mvcBuilder.AddDataAnnotationsLocalization(options => {
                options.DataAnnotationLocalizerProvider = (type, factory) => new NccStringLocalizer <SharedResource>(factory, new HttpContextAccessor());
            });

            _services.AddResponseCaching();
            _services.AddSession();
            _services.AddDistributedMemoryCache();
            _services.AddResponseCompression();
            _services.AddSingleton(Configuration);

            _services.AddNccCoreModuleRepositoryAndServices();

            _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

            _themeManager = new ThemeManager();
            var themeFolder = Path.Combine(_hostingEnvironment.ContentRootPath, NccInfo.ThemeFolder);

            GlobalConfig.Themes = _themeManager.ScanThemeDirectory(themeFolder);

            var themesDirectoryContents = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ThemeFolder);

            _themeManager.RegisterThemes(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);

            var moduleFolder     = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ModuleFolder);
            var coreModuleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.CoreModuleFolder);
            var coreModules      = _moduleManager.LoadModules(coreModuleFolder);
            var userModules      = _moduleManager.LoadModules(moduleFolder);

            GlobalConfig.Modules.AddRange(userModules);


            _services.AddMaintenance(() => _setupConfig.IsMaintenanceMode, Encoding.UTF8.GetBytes("<div style='width:100%;text-align:center; padding-top:10px;'><h1>" + _setupConfig.MaintenanceMessage + "</h1></div>"), "text/html", _setupConfig.MaintenanceDownTime * 60);

            if (SetupHelper.IsDbCreateComplete)
            {
                if (SetupHelper.SelectedDatabase == "SqLite")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseSqlite(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }
                else if (SetupHelper.SelectedDatabase == "MSSQL")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseSqlServer(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }
                else if (SetupHelper.SelectedDatabase == "MySql")
                {
                    _services.AddDbContext <NccDbContext>(options =>
                                                          options.UseMySql(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework"))
                                                          );
                }

                _services.AddCustomizedIdentity();
                _startup.RegisterDatabase(_services);

                _services.AddAuthorization(options =>
                {
                    options.AddPolicy("SuperAdmin", policy => policy.Requirements.Add(new AuthRequire("SuperAdmin", "")));
                    options.AddPolicy("Administrator", policy => policy.Requirements.Add(new AuthRequire("Administrator", "")));
                    options.AddPolicy("Editor", policy => policy.Requirements.Add(new AuthRequire("Editor", "")));
                    options.AddPolicy("Author", policy => policy.Requirements.Add(new AuthRequire("Author", "")));
                    options.AddPolicy("Contributor", policy => policy.Requirements.Add(new AuthRequire("Contributor", "")));
                    options.AddPolicy("Subscriber", policy => policy.Requirements.Add(new AuthRequire("Subscriber", "")));
                });

                _services.AddSingleton <IAuthorizationHandler, AuthRequireHandler>();
                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                GlobalConfig.Modules = _moduleManager.RegisterModules(_mvcBuilder, _services, _serviceProvider);
                _moduleManager.RegisterModuleRepositoryAndServices(_mvcBuilder, _services, _serviceProvider);

                _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

                GlobalConfig.Widgets = _moduleManager.RegisterModuleWidgets(_mvcBuilder, _services, _serviceProvider);
                var themeWidgets = _themeManager.RegisterThemeWidgets(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents);

                if (themeWidgets != null && themeWidgets.Count > 0)
                {
                    GlobalConfig.Widgets.AddRange(themeWidgets);
                }

                _nccShortCodeProvider   = _serviceProvider.GetService <NccShortCodeProvider>();
                GlobalConfig.ShortCodes = _nccShortCodeProvider.ScanAndRegisterShortCodes(GlobalConfig.Modules);
            }

            var defaultCulture = new RequestCulture("en");

            if (SetupHelper.IsAdminCreateComplete)
            {
                GlobalConfig.SetupConfig = SetupHelper.LoadSetup();
                defaultCulture           = new RequestCulture(GlobalConfig.SetupConfig.Language);
            }

            services.Configure <RouteOptions>(options =>
            {
                options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
            });

            _services.Configure <RequestLocalizationOptions>(
                opts =>
            {
                var supportedCultures      = SupportedCultures.Cultures;
                opts.DefaultRequestCulture = defaultCulture;
                opts.SupportedCultures     = supportedCultures;
                opts.SupportedUICultures   = supportedCultures;

                var provider = new RouteDataRequestCultureProvider();
                provider.RouteDataStringKey   = "lang";
                provider.UIRouteDataStringKey = "lang";
                provider.Options = opts; opts.RequestCultureProviders = new[] { provider };
            }
                );

            services.Configure <ClassLibraryLocalizationOptions>(
                options => options.ResourcePaths = new Dictionary <string, string>
            {
                { "NetCoreCMS.Framework", "i18n/Resources" },
                { "NetCoreCMS.Web", "Resources" }
            }
                );

            _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment);

            GlobalConfig.ServiceProvider = _serviceProvider;
            GlobalConfig.Services        = _services;
        }
Пример #21
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            #region authenctication and authorization
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
            {
                options.AccessDeniedPath  = "/home/forbbiden";
                options.LoginPath         = "/account/login";
                options.ExpireTimeSpan    = TimeSpan.FromDays(30);
                options.SlidingExpiration = true;
            });
            services.AddAuthorization(options =>
            {
                options.AddPolicy("admin", policy => policy.RequireRole("admin"));
                options.AddPolicy("badmin", policy => policy.RequireRole("buildingAdmin"));
                options.AddPolicy("owner", policy => policy.RequireRole("propertyOwner"));
                options.AddPolicy("both", policy => policy.RequireRole("buildingAdmin", "propertyOwner"));
            });
            #endregion ;

            #region localization
            services.AddJsonLocalization();
            services.Configure <RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new List <CultureInfo>
                {
                    new CultureInfo("ro"),
                    new CultureInfo("en")
                };
                options.DefaultRequestCulture = new RequestCulture("en");
                options.SupportedCultures     = supportedCultures;
                options.SupportedUICultures   = supportedCultures;

                var provider = new RouteDataRequestCultureProvider();
                provider.UIRouteDataStringKey = "lang";
                provider.RouteDataStringKey   = "lang";
                provider.Options = options;
                options.RequestCultureProviders = new[] { provider };
            });

            services.Configure <RouteOptions>(options =>
            {
                options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint));
            });
            #endregion ;

            services.AddDataProtection();
            services.AddEmailService();
            services.AddDependencies();

            #region logging
            services.AddSingleton <ILoggerFactory, LoggerFactory>();
            services.AddSingleton(typeof(ILogger <>), typeof(Logger <>));
            services.AddLogging((builder) => builder.SetMinimumLevel(LogLevel.Error));

            var serviceProvider = services.BuildServiceProvider();

            var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();

            //configure NLog
            loggerFactory.AddNLog(new NLogProviderOptions {
                CaptureMessageTemplates = true, CaptureMessageProperties = true
            });
            NLog.LogManager.LoadConfiguration("Configs/nlog.config");
            #endregion ;


            #region configuration
            services.Configure <HashingConfig>(Configuration.GetSection("Hashing"));
            services.AddSingleton <IConfiguration>(Configuration);
            services.AddScoped <ValidateReCaptchaAttribute>();
            services.AddTransient <ApartmentController>();
            #endregion ;

            if (Configuration["InitDb"].Equals("true"))
            {
                var repository = serviceProvider.GetService <IBaseMongoRepository>();
                var hashing    = serviceProvider.GetService <IArgonHash>();
                MongoDb.Initilize(repository, hashing, Configuration.GetSection("Hashing").Get <HashingConfig>());
            }

            // url helper
            services.AddSingleton <IActionContextAccessor, ActionContextAccessor>()
            .AddScoped <IUrlHelper>(x => x.GetRequiredService <IUrlHelperFactory>()
                                    .GetUrlHelper(x.GetRequiredService <IActionContextAccessor>().ActionContext));
            services.AddMvc(options => {
                options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
                //options.Filters.Add(new RequireHttpsAttribute());
            }).AddViewLocalization().AddDataAnnotationsLocalization();
        }
Пример #22
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseDetection();
            app.UseCors();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Core V1");
                });
            }
            else
            {
                app.UseHsts();
            }

            #region Localization

            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("en-US")
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            app.UseRequestLocalization(localizationOptions);

            var requestProvider = new RouteDataRequestCultureProvider();
            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
            var locOptions = app.ApplicationServices.GetService <IOptions <RequestLocalizationOptions> >();
            app.UseRequestLocalization(locOptions.Value);

            #endregion Localization

            app.UseHttpsRedirection();

            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();

            app.UseMiddleware(typeof(ErrorWrappingMiddleware));
            app.UseResponseCompression();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHealthChecks("/health", new HealthCheckOptions()
                {
                    ResultStatusCodes =
                    {
                        [HealthStatus.Healthy]   = StatusCodes.Status200OK,
                        [HealthStatus.Degraded]  = StatusCodes.Status200OK,
                        [HealthStatus.Unhealthy] = StatusCodes.Status503ServiceUnavailable
                    }
                });

                endpoints.MapControllers();
            });
        }
Пример #23
0
        public void Configure(IApplicationBuilder app,
                              IHostingEnvironment env,
                              UserManager <UserApp> userManager,
                              RoleManager <ApplicationRole> roleManager)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            var locOptions = app.ApplicationServices.GetService <IOptions <RequestLocalizationOptions> >();

            app.UseRequestLocalization(locOptions.Value);



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


            #region Router Language config

            var supportedCultures = new List <CultureInfo>
            {
                new CultureInfo(LANGCONSTANT.Az),
                new CultureInfo(LANGCONSTANT.En),
                new CultureInfo(LANGCONSTANT.Ru)
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                SupportedCultures       = supportedCultures,
                SupportedUICultures     = supportedCultures,
                DefaultRequestCulture   = new RequestCulture(LANGCONSTANT.Az),
                RequestCultureProviders = new List <IRequestCultureProvider>
                {
                    new QueryStringRequestCultureProvider
                    {
                        QueryStringKey   = "culture",
                        UIQueryStringKey = "ui-culture"
                    }
                }
            };


            var requestProvider = new RouteDataRequestCultureProvider();
            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=" + LANGCONSTANT.Az + "}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=" + LANGCONSTANT.Az + "}/{controller=Home}/{action=Index}/{id?}");

                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });

            #endregion

            DbInitializer.Seed(userManager, roleManager, Configuration).Wait();
        }
Пример #24
0
        // 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("/Error");
                app.UseStatusCodePagesWithReExecute("/Error/{0}");
            }
            app.UseStaticFiles();
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "Areas/Panel/wwwroot")),
                RequestPath  = new PathString("/panel")
            });
            app.UseAuthentication();
            app.UseBrowserLink();
            var options = app.ApplicationServices
                          .GetService <IOptions <RequestLocalizationOptions> >();

            app.UseRequestLocalization(options.Value);
            IList <CultureInfo> supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("tr"),
                new CultureInfo("en"),
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en-US"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "areas",
                            template: "{area:exists}/{controller=Panel}/{action=Index}/{id?}");

                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en-US}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
            app.UseMvc();
            //app.UseMvc(routes =>
            //{
            //    routes.MapRoute(
            //        name: "areas",
            //        template: "{area:exists}/{controller=Panel}/{action=Index}/{id?}"
            //    );
            //    routes.MapRoute(
            //        name: "default",
            //        template: "{controller=Home}/{action=Index}/{id?}"
            //    );
            //});
        }
        public static IServiceCollection AddRequestLocalizationOptions(this IServiceCollection services, string defaultCulture, bool allowCountries, bool allowLanguages, params string[] supportedUICultures)
        {
            //https://andrewlock.net/adding-localisation-to-an-asp-net-core-application/
            //Default culture should be set to where the majority of traffic comes from.
            //If the client sends through "en" and the default culture is "en-AU". Instead of falling back to "en" it will fall back to "en-AU".
            var defaultLanguage = defaultCulture.Split('-')[0];

            //Support all formats for numbers, dates, etc.
            var formatCulturesList = new List <string>();

            //Countries = en-US
            if (allowCountries)
            {
                foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
                {
                    if (!formatCulturesList.Contains(ci.Name))
                    {
                        formatCulturesList.Add(ci.Name);
                    }
                }
            }

            if (allowLanguages)
            {
                //Languages = en
                foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
                {
                    if (!formatCulturesList.Contains(ci.TwoLetterISOLanguageName) && ci.TwoLetterISOLanguageName != defaultLanguage)
                    {
                        formatCulturesList.Add(ci.TwoLetterISOLanguageName);
                    }
                }
            }

            var supportedFormatCultures = formatCulturesList.Select(x => new CultureInfo(x)).ToArray();

            var supportedUICultureInfoList = new List <CultureInfo>()
            {
                new CultureInfo(defaultCulture)
            };

            foreach (var supportedUICulture in supportedUICultures)
            {
                if (supportedUICulture != defaultCulture)
                {
                    supportedUICultureInfoList.Add(new CultureInfo(supportedUICulture));
                }
            }

            var options = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(culture: defaultCulture, uiCulture: defaultCulture),
                // Formatting numbers, dates, etc.
                SupportedCultures = supportedFormatCultures,
                // UI strings that we have localized.
                SupportedUICultures = supportedUICultureInfoList
            };

            //Default culture providers
            //1. Query string
            //2. Cookie
            //3. Accept-Language header

            //https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.2
            //https://andrewlock.net/url-culture-provider-using-middleware-as-mvc-filter-in-asp-net-core-1-1-0/
            //https://andrewlock.net/applying-the-routedatarequest-cultureprovider-globally-with-middleware-as-filters/
            //https://gunnarpeipman.com/aspnet/aspnet-core-simple-localization/
            //http://sikorsky.pro/en/blog/aspnet-core-culture-route-parameter

            //Route("{culture}/{ui-culture}/[controller]")]
            //[Route("{culture}/[controller]")]

            var routeDataRequestProvider = new RouteDataRequestCultureProvider()
            {
                Options = options, RouteDataStringKey = "culture", UIRouteDataStringKey = "ui-culture"
            };

            //options.RequestCultureProviders.Insert(0, routeDataRequestProvider);

            options.RequestCultureProviders = new List <IRequestCultureProvider>()
            {
                routeDataRequestProvider,
                new QueryStringRequestCultureProvider()
                {
                    QueryStringKey = "culture", UIQueryStringKey = "ui-culture"
                },
                new CookieRequestCultureProvider(),
                new AcceptLanguageHeaderRequestCultureProvider(),
            };

            services.AddSingleton(options);

            return(services);
        }
Пример #26
0
        // 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.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();


            var localizationOptions = app.ApplicationServices.GetService <IOptions <RequestLocalizationOptions> >().Value;
            var requestProvider     = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
            #region option1
            //app.Use(async (context, next) =>
            //{
            //    await next.Invoke();
            //    if (context.Response.StatusCode == StatusCodes.Status404NotFound)
            //    {
            //        context.Response.Redirect(@"/en-us/Home/Index", true);
            //    }
            //});

            //app.UseRouter(routes =>
            //{
            //    routes.MapMiddlewareRoute("{culture}/{*mvcRoute}", subApp =>
            //    {
            //        subApp.UseRequestLocalization(localizationOptions);

            //        subApp.UseMvc(mvcRoutes =>
            //        {
            //            mvcRoutes.MapRoute(
            //                name: "default",
            //                template: "{culture}/{controller=Home}/{action=Index}/{id?}");
            //        });
            //    });

            //});
            #endregion

            #region Option2
            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=en-US}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en-US}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
            #endregion
        }
Пример #27
0
        // 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();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            // STANDART ROUTİNG MEKANİZMASI İLE DİL DESTEĞİ KULLANMAK

            //var supportedCultures = new List<CultureInfo>
            //{
            //    new CultureInfo("tr-TR"),
            //    new CultureInfo("en-US"),
            //};


            //app.UseRequestLocalization(new RequestLocalizationOptions
            //{
            //    SupportedCultures = supportedCultures,
            //    SupportedUICultures = supportedCultures,
            //    DefaultRequestCulture = new RequestCulture("tr-TR")
            //});

            //app.UseMvc(routes =>
            //{
            //    routes.MapRoute(
            //        name: "default",
            //        template: "{controller=Home}/{action=Index}/{id?}");
            //});


            // DİL DESTEĞİNİ ROUTİNG YAPISINA GÖRE AYARLAMAK

            var supportedCultures = new List <CultureInfo>
            {
                new CultureInfo("tr-TR"),
                new CultureInfo("en-US"),
            };

            var localizationOptions = new RequestLocalizationOptions
            {
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures,
                DefaultRequestCulture = new RequestCulture("tr-TR"),
            };
            var requestProvider = new RouteDataRequestCultureProvider();

            localizationOptions.RequestCultureProviders.Insert(0, requestProvider);

            app.UseRouter(routes =>
            {
                routes.MapMiddlewareRoute("{culture=tr-TR}/{*mvcRoute}", subApp =>
                {
                    subApp.UseRequestLocalization(localizationOptions);

                    subApp.UseMvc(mvcRoutes =>
                    {
                        mvcRoutes.MapRoute(
                            name: "default",
                            template: "{culture=en-US}/{controller=Home}/{action=Index}/{id?}");
                    });
                });
            });
        }