如果请求包含不受支持的文化,我如何在 http 请求和 http 响应之间添加默认文化?
How can i add a default culture between an http request and http response if the request contains an unsupported culture?
我有一个模板 asp.net 核心 mvc 项目,我想设置本地化。
我意识到,如果我设置我的默认 cultureinfo,那么如果它在 accept-language header 内,无论它的位置或优先级如何(q-factor 权重,它都会被选中).
所以我想出了根本不设置默认 cultureinfo 的想法,这样它就可以取决于请求的 header。它只有 1 个问题。我不确定如果 accept-header 包含我的应用程序不支持的区域性会发生什么。
是否有任何方法可以在请求和响应之间设置某种中间件,以便在请求包含不受支持的文化时设置默认文化?
这是我在 startup.cs 中的相关代码部分:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("de"),
new CultureInfo("en"),
new CultureInfo("fr")
};
var localizationOptions = new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(localizationOptions);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
.Net Core 3.1 已附带 Globalization and Localization Middleware
here. And this is built-in middleware for you Accept-Language.
因此,如果没有Accept-Language
,默认的Culture
就是Server Culture
。如果你想设置你不确定的Server Culture
,你可以写一个自定义中间件example来强制你的默认Culture
我有一个模板 asp.net 核心 mvc 项目,我想设置本地化。
我意识到,如果我设置我的默认 cultureinfo,那么如果它在 accept-language header 内,无论它的位置或优先级如何(q-factor 权重,它都会被选中).
所以我想出了根本不设置默认 cultureinfo 的想法,这样它就可以取决于请求的 header。它只有 1 个问题。我不确定如果 accept-header 包含我的应用程序不支持的区域性会发生什么。
是否有任何方法可以在请求和响应之间设置某种中间件,以便在请求包含不受支持的文化时设置默认文化?
这是我在 startup.cs 中的相关代码部分:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("de"),
new CultureInfo("en"),
new CultureInfo("fr")
};
var localizationOptions = new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(localizationOptions);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
.Net Core 3.1 已附带 Globalization and Localization Middleware
here. And this is built-in middleware for you Accept-Language.
因此,如果没有Accept-Language
,默认的Culture
就是Server Culture
。如果你想设置你不确定的Server Culture
,你可以写一个自定义中间件example来强制你的默认Culture