Тема «XXX» не может быть найдена в каталоге приложений или глобальных тем - PullRequest
7 голосов
/ 29 июня 2009

Мой сайт asp.net позволяет пользователям выбирать нужную тему из списка, созданного из папки app_themes. Время от времени темы переименовываются или удаляются. Любой пользователь, выбравший имя удаленной темы (оно хранится в файле cookie), получит исключение:

Theme 'XXX' cannot be found in the application or global theme directories
Stack Trace: 
[HttpException (0x80004005): Theme 'test' cannot be found in the application or global theme directories.]
   System.Web.Compilation.ThemeDirectoryCompiler.GetThemeBuildResultType(String themeName) +920
   System.Web.Compilation.ThemeDirectoryCompiler.GetThemeBuildResultType(HttpContext context, String themeName) +73
   System.Web.UI.Page.InitializeThemes() +8699455
   System.Web.UI.Page.PerformPreInit() +38
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +282

Где лучше всего поймать и обработать это исключение?

Ответы [ 3 ]

3 голосов
/ 11 декабря 2012

если вы используете файлы cookie для хранения выбранной пользователем темы и получаете сообщение об ошибке «xxx» - тема не найдена в локальном или глобальном каталоге, убедитесь, что имя вашего файла cookie не совпадает с именем другого файла cookie.

2 голосов
/ 29 июня 2009

В методе Page_PreInit, где вы назначаете темы, есть несколько способов справиться с этим. Я проверяю, существует ли каталог. Если это так, то это тема, которую я хочу. Если это не так, используйте тему по умолчанию, где я знаю, что каталог существует.

void Page_PreInit(object sender, EventArgs e)
{
    if (ViewState["PageTheme"] == null)
    {
        if (!Directory.Exists("~/App_Themes/THEMENAME_TO_LOOK_FOR"))
        {
            Theme = "DEFAULT_THEME"
        } 
        else 
        {
            Theme = "THEMENAME_TO_LOOK_FOR";
        }
        ViewState["PageTheme"] = Theme;
    } 
    else 
    {
        Theme = ViewState["PageTheme"].ToString();
    }
}

Я обычно сохраняю данные в состоянии просмотра, поэтому мне не нужно каждый раз перепроверять, но если вы меняете темы на лету, вам, вероятно, не нужно этого делать.

0 голосов
/ 29 июня 2009

Вы должны убедиться, что изменили предпочтения тем пользователей, если они используют вашу тему для переименования / удаления. Если переименовано, то переименуйте соответственно, если удалено, измените на тему по умолчанию. Поскольку вы сохраняете предпочтения темы в файлах cookie, вам нужно будет проверить их и внести изменения при доступе пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...