【发布时间】:2020-05-22 19:57:26
【问题描述】:
我有一个使用 ASP.NET Core 3.1 MVC 编写的多语言网站。
它支持两种语言:阿塞拜疆语和英语。它使用路由基础本地化。
我将app.UseExceptionHandler(...)设置为使用异常页面,如下所示。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/en/main/error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/en/main/error", "?code={0}");
...
}
但我有一个问题。问题是我的异常页面总是使用"en" 文化。
因为我设置了 app.UseExceptionHandler 的 errorEandlingPath 硬编码。 (app.UseExceptionHandler("/en/main/error"); 和 app.UseStatusCodePagesWithReExecute("/en/main/error", "?code={0}");)
我的站点的路由配置如下:
...
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "default", pattern: "{culture=az}/{controller=Main}/{action=Index}/{id?}");
}
...
如何在app.UseExceptionHandler("/en/main/error"); 中动态设置当前文化?
例如:如果用户使用阿塞拜疆文化,errorEandlingPath 必须为"/az/main/error",否则为"/en/main/error"。
我试过了
app.UseExceptionHandler("/{culture}/main/error");
和
app.UseStatusCodePagesWithReExecute("/{culture}/main/error", "?code={0}");
但两者都不起作用。请帮助我,谢谢)
【问题讨论】:
标签: c# asp.net-core model-view-controller