Meine asp.net-Site ermöglicht Benutzern, das gewünschte Thema aus einer Liste aus dem app_themes-Ordner auszuwählen. Von Zeit zu Zeit werden Themen umbenannt oder entfernt. Jeder Benutzer, der ein gelöschtes Thema Namen ausgewählt hat (in einem Cookie gespeichert wird) wird die Ausnahme erhalten:Theme 'XXX' kann nicht in der Anwendung oder globalen Themenverzeichnisse gefunden werden
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
Wo ist der beste Ort zu stoppen und zu handhaben diese Ausnahme?
Ich kann sehen, dass dies funktionieren würde, aber es scheint ziemlich viel Aufwand für jede Seitenanforderung. Vermutlich dauert Directory.Exists relativ lange. Es sollte sehr selten sein, dass dies passiert, und deshalb wollte ich die Ausnahme fangen, ich wollte nur sicher sein, was der Ausnahme-Typ war oder wo der Versuch zu fangen. – simon831
Ich stimme zu - deshalb habe ich festgestellt, dass wir das Ergebnis im Viewstate speichern, der die obige Funktion modifiziert. –