我遇到了一个非常奇怪的情况(从我的观点来看)。在生产计算机上,由于未处理的异常,我的应用程序崩溃了。以下是“应用程序”日志中有关异常的记录:
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。不幸的是,我现在无法重现这个错误。