神秘的ArgumentOutOfRangeException和System .__ Canon

时间:2013-12-05 17:45:19

标签: c# .net

我遇到了一个非常奇怪的情况(从我的观点来看)。在生产计算机上,由于未处理的异常,我的应用程序崩溃了。以下是“应用程序”日志中有关异常的记录:

  

System.ArgumentOutOfRangeException
  堆栈:at   LayerCake.UI.ApplicationBootstrapper`2 [[System ._ Canon,mscorlib,   版本= 4.0.0.0,文化=中立,   PublicKeyToken = b77a5c561934e089],[系统。 _Canon,mscorlib,   版本= 4.0.0.0,文化=中立,   公钥= b77a5c561934e089]]。运行()
  在   OCDERP.Client.Shell.Bootstrapper.Main()

我之前从未见过这种类型(System.__Canon,在我的代码中类型定义是ApplicationBootstrapper<ApplicationVM, Application>),所以,我试图搜索一些信息,但没有太多解释,它是什么

好吧,调试异常,当你有堆栈跟踪更容易,不是吗? 但是这里是Run方法,堆栈跟踪结束(这是一个带有类似Prism的MVVM框架的WPF应用程序):

    public void Run()
    {
        logger.Debug(Resources.AB_LayerCakeHello);
        logger.Debug(Resources.AB_Starting);
        try
        {
            logger.Debug(Resources.AB_CreatingApplicationCatalog);

            using (var catalog = CreateApplicationCatalog())
            {
                logger.Debug(Resources.AB_CreatingApplicationViewModel);
                var viewModel = CreateApplicationViewModel(catalog);

                logger.Debug(Resources.AB_LoadingMainWindowsSettings);

                var service = viewModel
                    .PartsContainer
                    .GetExportedValue<IApplicationDataService<T>>();

                var settings = service.LoadMainWindowSettings();

                ConfigureWindowSettings(settings);

                logger.Debug(Resources.AB_CreatingApplication);

                var application = new Application();

                InitializeApplicationResources(application);

                logger.Debug(Resources.AB_ShowingMainWindow);
                viewModel
                    .PartsContainer
                    .GetExportedValue<IPresentationService>()
                    .ShowInMainWindow(viewModel, settings);

                logger.Debug(Resources.AB_Running);
                application.Run(); // starting application message loop

                logger.Debug(Resources.AB_SavingWindowSettings);
                service.SaveMainWindowSettings(settings);
            }
        }
        catch (Exception e)
        {
            logger.Error(e);
            throw;
        }
        logger.Debug(Resources.AB_Stopping);
    }

我不知道,这个方法ArgumentOutOfRange可以在哪里被引发。 好吧,可以在嵌套方法中的某处引发,但它应该反映在堆栈跟踪中。

我错过了什么?

P.S。不幸的是,我现在无法重现这个错误。

0 个答案:

没有答案