3

我有一个 ASP.NET MVC4 应用程序,在“资源”文件夹中有两个资源文件,如下所示:

项目
 资源
  Resources.fr-CA.resx
  资源.resx

我根据用户设置设置了当前文化,并且此设置一切正常。

但是,我有一个处理错误的类,既向用户显示它们,又将它们记录在数据库中。我想要的是使用用户的当前文化显示错误消息,但使用英文消息将其记录在数据库中。

我做了一些研究,发现了几个选项来获取特定文化的资源字符串,但我遇到了问题。

HttpContext.GetLocalResourceString("~/Resources/Resources.resx", "Error_Message", CultureInfo.CreateSpecificCulture("en-US"))throwsThe resource class for this page was not found. Please check if the resource file exists and try again.我试过弄乱 uri 无济于事。

HttpContext.GetGlobalResourceString("Resources", "Error_Message", CultureInfo.CreateSpecificCulture("en-US"))总是返回 null。

我怎样才能做到这一点(在不改变的情况下获取特定文化的资源字符串Thread.CurrentThread.CurrentCulture)?

4

1 回答 1

4

不要使用资源字符串进行日志记录。

  • 资源字符串可以在与代码无关的情况下更改,从而使日志更难搜索。
  • 如果字符串不在代码中内联,则更难理解将写入日志文件的内容。

但是,如果您确实需要从其他语言获取字符串,请使用较低级别的 API 来获取正确的资源集并获取字符串:ResourceManager.GetResourceSetResourceSet.GetString

于 2013-04-17T17:19:23.460 回答