Asp.net
在 ASP.Net Core 中禁用 Accept-Language 標頭的預設使用
在 ASP.Net Core 中,我根據有關在應用程序中建立文化的文件進行了以下設置:
var supportedCultures = new[] { new CultureInfo("en-CA"), new CultureInfo("fr-CA"), new CultureInfo("fr"), new CultureInfo("en"), new CultureInfo("en-US"), }; var defaultRequestCulture = Configuration["Settings:Culture:DefaultRequestCulture"]; if (defaultRequestCulture == null) { defaultRequestCulture = "en-CA"; } app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture(defaultRequestCulture), SupportedCultures = supportedCultures, SupportedUICultures = supportedCultures });我已將其添加
Settings:Culture:DefaultRequestCulture到appsettings.json文件中,以便可以在每個站點安裝的基礎上對其進行配置。該文件表明可以更改順序,但遺憾的是沒有提供有關如何執行此操作的範例。
它表示預設使用這三個提供程序:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
我不知道如何禁用第三個。我希望其他的保持原樣,但讓應用程序完全忽略 HTTP 標頭。
就像您想從
IList<T>.var localizationOptions = new RequestLocalizationOptions { SupportedCultures = ..., SupportedUICultures = ..., DefaultRequestCulture = new RequestCulture("en-US") }; var requestProvider = localizationOptions.RequestCultureProviders.OfType<AcceptLanguageHeaderRequestCultureProvider>().First(); localizationOptions.RequestCultureProviders.Remove(requestProvider);要不就
var localizationOptions = new RequestLocalizationOptions { SupportedCultures = ..., SupportedUICultures = ..., DefaultRequestCulture = new RequestCulture("en-US"), RequestCultureProviders = new List<IRequestCultureProvider> { // Order is important, its in which order they will be evaluated new QueryStringRequestCultureProvider(), new CookieRequestCultureProvider() }; };