2015-05-08 2 views
1

Я пытаюсь захватить ошибку в файле App.config при запуске приложения, но я не получаю. Все глобальные события ошибок (например, AppDomain.CurrentDomain.UnhandledException или Application.DispatcherUnhandledException) не работают, чтобы поймать формат документа Inc.Config, который не был вызван, когда приложение OnStartup метод App.xaml не вызывается, приложение аварийно завершает работу раньше.Ошибка обработчика WPF/исключение из app.config при запуске приложения

Образец недействителен app.config:

<configuration> 

    <configSections> 
    <section name="XXXX" type="TesteAssembly.MainSpace, TesteAssembly" /> 
    </configSections> 

    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 

</configuration> 

Однако, я обнаружил, что если файл App.config имеет неверный формат, чтобы создать экземпляр класса Application исключение выбрасывается. Таким образом, единственное решение, которое я нашел, это удалить App.xaml, создать класс с основным методом и вручную запустить экземпляр приложения (базовый класс App.xaml).

пример:

[STAThread] 
    public static void Main(string[] args) 
    { 
     try 
     { 
      Application p = new Application(); 

      p.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative); 

      p.Run(); 

     } 
     catch (Exception) 
     { 

      throw; 
     } 


    } 

Существует еще одно решение этой ситуации?

ответ

1

Попробуйте вручную загрузить конфигурацию, как это, чтобы диагностировать проблему. Поместите этот код в начало Main(). Скорее всего, имя типа раздела неверно:

var configMap = new ExeConfigurationFileMap(); 
configMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
+0

Приложение app.config изменено заказчиком в производственной среде (развертывании). Цель состоит в том, чтобы справиться с сбоем при загрузке файла e, чтобы избежать сбоев приложений, не зная причины. Его решение действительно, но не препятствует использованию метода Main, как в моем решении. Исследован в другом месте, чтобы узнать, есть ли что-то, не используя основной метод, то есть используя App.xaml, но не найденный. Однако, спасибо за ваш вклад. –

Смежные вопросы