#c# #asp.net
#c# #asp.net
Вопрос:
У меня есть resx-файл в App_GlobalResources в моем веб-приложении, вызываемый с:
Resources.GetResource("ResourceFileName", "Resource")
Вспомогательный метод находится в отдельной библиотеке классов для получения значений ресурсов:
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, все работает нормально. Если я выполняю развертывание на веб-сервере, все вызовы GetGlobalResourceObject возвращаются как null.
Ресурсы существуют. Как мне их извлечь?
Спасибо,
Ричард
Ответ №1:
У меня тоже такая проблема, и да, «GetGlobalResourceObject (…)» всегда возвращает null после публикации.
Итак, я нашел решение, используя вместо ‘GetGlobalResourceObject(«Captions», «button_go_text»)’ to ‘Ресурсы.Подписи.ResourceManager.getString(ключ)’
Пример кода выглядит следующим образом
public static string GetResMsg(this HtmlHelper htmlHelper, string key)
{
try
{
return Resources.[resource class name].ResourceManager.GetString(key);
}
catch
{
return "?";
}
}
Я надеюсь, что это помогает,
с наилучшими пожеланиями
Ответ №2:
Я смог решить эту проблему, установив для пользовательского инструмента моего файла ресурсов значение GlobalResourceProxyGenerator
И действие сборки для содержимого и свойства Копировать в выходной каталог для копирования всегда
Если бы я не сделал этого при публикации в рабочей среде, вызовы HttpContext.GetGlobalResourceObject всегда возвращали бы значение null.