以编程方式访问asp.net全局资源字符串的错误消息

时间:2011-11-23 09:29:11

标签: c# asp.net resources

尝试使用以下代码访问位于WebResource.en.us文件夹中的App_GlobalResources等特定的本地化资源文件:

string resData = GetGlobalResourceObject("WebResource.en.us", "SomeResource").ToString();

但这不断给我以下错误:

  

无法找到适合指定文化的任何资源或   中性文化。确保“Resources.WebResource.en-us.resources”   被正确嵌入或链接到程序集中   编译时“App_GlobalResources.bpqqrnv4”。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我尝试了以下代码

Page_Load(....)
{
   /// note - i did NOT mention the culture when accesing my resourceFiles
   Debug.WriteLineIf(
       GetGlobalResourceObject("WebResource", "someResource")!=null,
       GetGlobalResourceObject("WebResource", "someResource").ToString());

   /// accessing a culture specific resource without changing Page Culture
   CultureInfo yourCI = new CultureInfo("en-US");
   Debug.WriteLine(
      HttpContext.GetGlobalResourceObject(
          "WebResource", 
          "someResource", 
          yourCI).ToString());
}

我的Page指令

<% Page Culture="en-US" UICulture="en-US" .....  %>

我的App_GlobalResources文件夹包含两个文件

  • WebResource.resx
  • WebResource.en-US.resx

使用此设置和代码 - 我的调试器打印了没有任何问题的值。 当删除 WebResource.resx (我的默认资源文件)时,相同的代码会抛出异常

我认为您必须在GetGlobalResourceObject(... ,.)中添加默认resx文件删除 显式文化符号。 )。

更新添加了一些代码来访问特定的resx文化文件 另见MSDN