【问题标题】:Set/Change/Update current culture dynamically c#动态设置/更改/更新当前文化c#
【发布时间】:2015-06-16 11:44:11
【问题描述】:

我正在尝试通过 c#.net 改变 web api 中的当前文化。我也尝试过使用 web 表单和 asp.net mvc,但没有成功

在查看 Stack Overflow 的一些答案后,我找到了以下改变当前文化的答案。

  CultureInfo.CurrentCulture.ClearCachedData();
     System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(Code);
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(Code);

但是在我更新之后,文化已经改变了仅针对当前请求。从应用程序发送另一个请求后,文化信息已更改为默认值。

我不知道发生了什么。我想在用户注销之前保持应用程序的当前文化

如何实现这个?

【问题讨论】:

  • 如果您在 asp.net mvc/web 表单应用程序中,您需要在 global.asax 文件中执行此操作。如果您在 web-api 中,我认为这没有意义,因为在 web-api 项目中您没有应用程序,而只是独立的 http 请求
  • 谢谢。如果我们使用asp.net mvc/web forms应用,在global.asax中怎么办?
  • 我在asp.net MVC/web forms应用程序中也试过了,但是没有用。如何在global.asax中实现?
  • 它工作正常:当 2 个不同文化的用户登录时会发生什么?您希望文化依赖于每个用户并为每个请求提供参数;我想。
  • 相关:Localize text on one page in MVC。您可以跳过有关使用 MVC 进行本地化的内容,直接跳到有关如何为服务请求线程设置文化的段落。

标签: c# asp.net-web-api


【解决方案1】:

您可以在 Global.asax 文件中覆盖 Application_BeginRequest 以更改每个请求的文化。

编辑:技术上不是覆盖。更多内容:how do you wire up Application_BeginRequest() in asp.net-mvc

【讨论】:

  • 查看编辑。那里有一些示例代码和解释。
  • 我很困惑。你是说在每个请求上改变文化。正确的?我确实在单击按钮时进行了翻译。这不应该保留在所有请求上吗?
  • 不,你必须change it for each request。同一个线程可以被多个请求重用(由不同的用户提出)。您的下一个请求可能在另一个线程中,甚至在另一个进程中。
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多