【发布时间】:2016-11-25 02:27:26
【问题描述】:
我正在开发一个新的 Asp.Net 核心 mvc 应用程序。我定义了一个带有自定义约束的路由,它从 url 设置当前的应用程序文化。我正在尝试通过创建一个自定义的IRequestCultureProvider 来管理我的应用程序的本地化,如下所示:
public class MyCustomRequestCultureProvider : IRequestCultureProvider
{
public Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
var language= httpContext.GetRouteValue("language");
var result = new ProviderCultureResult(language, language);
return Task.FromResult(result);
}
}
我的MyCustomRequestCultureProvider 在每次请求时都会被点击,这没关系。我的问题是,在 MVC 管道中,来自我的提供程序的 DetermineProviderCultureResult 方法在路由过程之前被命中,所以 httpContext.GetRouteValue("language") 总是返回 null。
在以前版本的 MVC 中,我可以通过这样做来通过路由过程手动处理我的 url
var wrapper = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(wrapper);
var language = routeData.GetValue("language")
我现在找不到在新框架中做同样事情的方法。另外,我想使用路由数据来找出我的语言,用一些字符串函数分析我的 url 字符串来查找语言不是一个选项。
【问题讨论】:
-
这个question and its answer 可能会有所帮助
-
@nboisvert 你能解决这个问题吗?
-
@SherleyDev 看到我的回答
标签: asp.net-core asp.net-core-mvc asp.net-core-1.0