Ошибка/исключение обработки WPF из app.config при запуске приложения

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

Пример недопустимого файла 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, создать класс с основным методом и вручную запустить экземпляр Application (базовый класс 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;
        }


    }

Есть другой выход из этой ситуации?


person Gilberto Alexandre    schedule 08.05.2015    source источник


Ответы (1)


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

var configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
person James Lucas    schedule 08.05.2015
comment
Мой app.config изменен заказчиком в производственной среде (развертывание). Цель состоит в том, чтобы обработать сбой при загрузке файла и избежать сбоев приложения, не зная причины. Его решение допустимо, но не препятствует использованию метода Main, как в моем решении. Исследовал в другом месте, чтобы узнать, было ли что-то без использования основного метода, то есть с использованием App.xaml, но не найдено. Тем не менее, спасибо за ваш вклад. - person Gilberto Alexandre; 11.05.2015