在 Web 中访问资源文件字符串时出现问题 API

Issue while accessing resource file strings in Web API

我添加了一个需要支持全球化的资源文件。

Global.asax 我收到了文化信息。

protected void Application_BeginRequest()
    {
        var cul = Context.Request.Headers["culture"];
        if (cul != null && !string.IsNullOrEmpty(cul))
        {
            var culture = new CultureInfo(cul);
            //Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }

现在我正在尝试访问它:

ResourceManager rm = new ResourceManager("Resource", System.Reflection.Assembly.GetExecutingAssembly());
string err = rm.GetString("ERROR_1");

我得到的错误是:

{"Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Resource.resources\" was correctly embedded or linked into assembly \"...\" at compile time, or that all the satellite assemblies required are loadable and fully signed."} System.SystemException {System.Resources.MissingManifestResourceException}

代码和资源具有相同的命名空间。

我对ResourceManager的使用经验不多,但是从官方文档来看,我不认为使用反射来获取程序集是有意的。它特别提到第二个参数,程序集,应该是'the assembly in which the default .resources file resides'。后面会讲设置Thread.CurrentThread.CurrentUICulture。您可以在 msdn 上找到所有这些信息:https://msdn.microsoft.com/en-us/library/system.resources.resourcemanager(v=vs.110).aspx

但是,您可能需要查看有关本地化 asp.net 网页的 msdn 文档:https://msdn.microsoft.com/en-us/library/ms227427.aspx。它似乎有一些专门的机制,可能对你很有用。