我的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。
资源存在。我怎么把它们拿出来?
谢谢,
理查德
答案 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
来解决此问题构建操作到内容和复制到输出目录属性为始终复制
如果我在发布到 HttpContext.GetGlobalResourceObject 的生产调用时没有这样做,那么它将始终返回null。