【问题标题】:global.asax Application_AcquireRequestState vs. Application_BeginRequestglobal.asax Application_AcquireRequestState 与 Application_BeginRequest
【发布时间】:2013-03-11 20:25:22
【问题描述】:

有什么区别? 我想在我的应用程序中实现语言下拉选择。 So when a selected language is selected, a Thread culture would be set and page reloaded.

像这样:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

上面的设置应该在哪里处理? Application_AcquireRequestState 还是 Application_BeginRequest?

谢谢

【问题讨论】:

  • 在用户设置文化数据后如何检索它?
  • 我会从 cookie 中读取它。所以“en-US”将从cookie中提取

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

这取决于您在请求中保存语言的方式。如果您使用会话来保存您选择的语言,您应该使用Application_AcquireRequestState,因为由于Application_BeginRequest 在生命周期中较早,会话状态对象可能还没有目前可用

【讨论】:

  • 好答案。所以你可以说(简化):会话中的文化 -> Application_AcquireRequestState / Cookie 中的文化 -> Application_BeginRequest。
  • 但是 Controller.BeginExecuteCore(我的 ASP.NET MVC 5 项目中有一个 BaseController)呢?我用它来设置我的文化(保存在 cookie 中)
  • 只是一种直觉,但对我来说使用带有“核心”的东西听起来很奇怪。另一个答案中的链接描述了整个生命周期,我确信其中包含了足够的钩子。
【解决方案2】:

Application_BeginRequest 发生在生命周期的早期,是“通常”的地方。

http://msdn.microsoft.com/en-us/library/ms178473%28v=VS.100%29.aspx

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多