HttpContext.GetGlobalResourceObject始终为类库中的null

时间:2011-05-09 02:33:53

标签: c# asp.net

我的Web应用程序中的App_GlobalResources中有一个resx文件,名称为:

Resources.GetResource("ResourceFileName", "Resource")

helper方法位于一个单独的类库中以获取资源值:

using System.Resources;
using System.Web;

public static class Resources
{
    public static string GetResource(string resource, string key)
    {
        try
        {
            string resourceValue = (string)HttpContext.GetGlobalResourceObject(resource, key);

            return string.IsNullOrEmpty(resourceValue) ? string.Empty : resourceValue;
        }
        catch (MissingManifestResourceException)
        {
            return string.Empty;
        }
    }
}

如果我点击F5,一切正常。如果我部署到Web服务器,对GetGlobalResourceObject的所有调用将返回null。

资源存在。我怎么把它们拿出来?

谢谢,

理查德

2 个答案:

答案 0 :(得分:5)

我也有同样的问题,是“GetGlobalResourceObject(...)”在发布后总是返回null。

所以,我找到了解决方案,而不是使用'GetGlobalResourceObject(“Captions”,“button_go_text”)''Resources.Captions.ResourceManager.GetString(key)'

示例代码如下所示


    public static string GetResMsg(this HtmlHelper htmlHelper, string key)
    {
      try
      {
        return Resources.[resource class name].ResourceManager.GetString(key);
      }
      catch
      {
        return "?";
      }
    }

我希望有所帮助,

最好的问候

答案 1 :(得分:1)

我能够通过将资源文件的自定义工具设置为 GlobalResourceProxyGenerator

来解决此问题

构建操作内容复制到输出目录属性为始终复制

Resource File Properties

如果我在发布到 HttpContext.GetGlobalResourceObject 的生产调用时没有这样做,那么它将始终返回null。