2

我想在我的页面上创建资源管理器并使用存储在我的资源文件中的一些数据。(default.aspx.resx 和 default.aspx.en.resx)

代码如下所示:

System.Resources.ResourceManager myResourceManager = System.Resources.ResourceManager.CreateFileBasedResourceManager("resource", 
               Server.MapPath("App_LocalResources") + Path.DirectorySeparatorChar, null);

    if (User.Identity.IsAuthenticated)
    {
        Welcome.Text =  myResourceManager.GetString("LoggedInWelcomeText");
    }
    else
    {
        Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText");
    }

但是当我在本地服务器上编译并运行它时,我得到了这种类型的错误:

在磁盘上找不到适合指定区域性(或中性区域性)的任何资源。baseName:resource locationInfo:fileName:resource.resources 描述:在当前Web请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Resources.MissingManifestResourceException:在磁盘上找不到适合指定区域性(或中性区域性)的任何资源。baseName:资源位置信息:文件名:resource.resources

源错误:

第 89 行:否则第 90 行:{ 第 91 行:Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText"); 第 92 行:} 第 93 行:

你能帮我解决这个问题吗?

4

2 回答 2

3

使用作为 System.Web.Page 基础的一部分的GetLocalResourceObject() 。如果您希望访问全局资源,请使用 GetGlobalResourceObject()。

把事情简单化 ;-)

于 2010-05-20T12:26:50.480 回答
1

根据MSDN, CreateFileBasedResourceManager 期待已编译的资源文件。通常,将 .resx 文件放在 App_LocalResources 中。此目录中是否有名为 resource.XXX.resources 的文件(其中 XXX 是当前的文化 ID)。

我没有方便的 VS 以便在 ASP.NET 项目中检查这一点,但处理资源字符串的常用方法是转到项目属性、资源选项卡并在那里创建字符串。这会在您的资源周围生成一个强类型包装器,从而避免显式创建您自己的 ResourceManager。

于 2010-04-04T14:02:50.790 回答