应用程序启动时,WPF处理来自app.config的错误/异常

时间:2015-05-08 15:02:08

标签: wpf xaml app-config

我试图在应用程序启动时捕获App.config文件中的错误,但我没有得到。 所有全局错误事件(如AppDomain.CurrentDomain.UnhandledException或Application.DispatcherUnhandledException)都无法捕获incorret格式的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,使用main方法创建一个类并手动启动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;
        }


    }

这种情况还有另一种解决办法吗?

1 个答案:

答案 0 :(得分:1)

尝试手动加载此配置以诊断问题。将此代码放在Main()的开头。部分类型名称很可能是错误的:

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