使用 getobject() 抛出 MissingManifestResourceException

问题描述 投票:0回答:1

我使用资源在我的 MVC 应用程序中存储不同的字符串以进行本地化。 我正在使用 HttpHandler 处理 JavaScript 并将

Translate(KEY)
调用更改为资源中的实际本地化字符串值。 这是在这里:本地化 ASP.NET 中的 JavaScript 文件中的文本

问题是当我从资源管理器调用 getObject 方法时,我得到

MissingManifestResourceException Could not find any resources appropriate for the specified culture or the neutral culture.

这里是相关代码部分(错误来自下面代码片段中的第6行):

private string TranslateScript(string text)
{
    MatchCollection matches = REGEX.Matches(text);
    ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

    foreach (Match match in matches)
    {
        object obj = manager.GetObject(match.Groups[1].Value, CultureInfo.CurrentCulture); //This throws the MissingManifestResourceException for some reson!!!!
        if (obj != null)
        {
            text = text.Replace(match.Value, CleanText(obj.ToString()));
        }
    }

    return text;
}

我做错了什么?

asp.net-mvc localization resources resourcemanager
1个回答
1
投票

好吧,我发现了问题,但我无法解释为什么会发生这种情况。 (还)

我发现了这篇文章ResourceManager 和 Asp.Net MVC 中的中立文化的问题 并按照他所做的步骤进行操作。 我已经换线了:

ResourceManager manager = new ResourceManager(typeof(CamelotShiftManagement.Strings.SharedStrings));

致:

ResourceManager manager = CamelotShiftManagement.Strings.SharedStrings.ResourceManager;

基本上,每个资源文件似乎都有一个对处理该资源文件的 ResourceManager 的静态引用。

这解决了我的问题。 话虽如此,我仍然不确定为什么我之前使用的方法不起作用......

© www.soinside.com 2019 - 2024. All rights reserved.