如何在MVC 5应用程序启动时读取cookie值

本文关键字:读取 cookie 启动 应用程序 MVC | 更新日期: 2023-09-27 18:05:14

我有一个具有本地化支持的MVC5应用程序。我已经使用路由来存储当前语言值。

 routes.MapRoute(
            name: "Default",
            url: "{lang}/{controller}/{action}/{id}",
            defaults: new { lang = "en", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

另一方面,我将当前区域性值存储在cookie中以供以后使用。每当用户想要开始浏览我的应用程序并根据cookie值设置他的语言时,我想从cookie中读取文化值。在此阶段之后,我将在路由值中存储语言参数。

如何在应用程序启动时从cookie中读取和设置语言?

如何在MVC 5应用程序启动时读取cookie值

我不确定你是否能够在应用程序启动时读取cookie,因为它仍然没有加载HttpContext

一旦你设置了HttpContext,你就可以从它读取cookie

当控制器工厂被调用时,它加载RequestContext,然后它附加到HttpContext,你可以注入你自己的控制器工厂以便在上下文中挂钩,在控制器实例化之前,但我不确定它是否值得。

我的建议是覆盖OnActionExecuting()方法在你的基本控制器,所以你会检查那里的cookie。您可以通过在方法中访问this.Request.Cookies来访问它们,或者如果它仍然没有填充,您可以从传递的ActionExecutingContext对象中访问RequestContext