路由中的动态默认参数 table

Dynamic default parameter in routing table

我正在为我的应用程序配置路由 table,我想捕获未指定语言的路由并重定向到指定语言页面。现在我只在RouteConfig中找到映射路由的解决方案,但问题是Initialize()只被调用一次,默认参数只被计算一次。

[InitializableModule]
[ModuleDependency(typeof(ServiceContainerInitialization))]
public class RouteConfig : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        LocalizationService localizationService = LocalizationService.Current;
        var currentLanguage = localizationService.GetString($"/locale/{ContentLanguage.PreferredCulture.Name}", ContentLanguage.PreferredCulture.Name);

        RouteTable.Routes.MapContentRoute(
            "EpiSeverRegisteredRoute",
            "{language}/{node}/{action}",
            new { language = currentLanguage, action = "index" });
    }

    public void Uninitialize(InitializationEngine context) {
    }

    public void Preload(string[] parameters) { }
}

我通过在我的 Global.asax 文件中添加 Application_BeginRequest(Object, EventArgs) 方法解决了我的问题,我在其中对本地化服务做了同样的工作,并重定向到指定另一种语言的路由。现在这个方法在每个请求开始时被调用,它不是 100% 好,对我来说,但它正在工作。

https://docs.microsoft.com/en-us/dotnet/api/a4swift_mrsr.global.application_beginrequest?view=bts-swift-dotnet