c# - WPF 应用程序在 Windows Server 2008 上崩溃
问题描述
我收到了关于 WPF 应用程序的错误报告,该应用程序无法在 Windows Server 2008 Service Pack 2 服务器中启动(该应用程序是我们分发给客户的管理工具)。由于这个应用程序有很多外部引用,我试图通过使用 Visual Studio 2013 创建一个简单的 WPF 应用程序来简化问题:一个纯白色的窗口,显示“hello world”,仅此而已。我试图让它在生产服务器中运行,但没有运气:它总是立即崩溃。
这是我所拥有的:
- 该应用程序是使用 WPF 的标准 VS 2013 模板创建的,因此它以 3.5 作为目标框架;我把它改成4.6
- 服务器安装了 .net 框架的 3.5 SP1 和 4.6 版本
- app.config 格式正确,
configSections
上面的部分,除了log4net,没有额外的引用,supportedRuntime
标签根据目标框架版本设置 - 我已经检查了项目中没有 3.5 版的项目引用
- 我已经尝试在处理程序中登录
DispatcherUnhandledException
和AppDomain.UnhandledException
- 该应用程序在我的开发环境中运行
- 仅当我将目标框架更改为 3.5 时,应用程序才能在生产环境中运行。在这种情况下,显示 WPF 窗口并正确生成日志文件
- 我已经尝试生成转储并尝试在 Visual Studio 中对其进行调试:我只收到“源不可用”消息和以 ntdll.dll!NtWaitForSingleObject() 结尾的堆栈跟踪
以下是错误详细信息:
描述:
停止工作
问题签名:
问题事件名称:APPRCASH
应用程序名称:MyApp.exe
应用程序版本:1.0.0.0
申请时间戳:5bfc07f1
故障模块名称:KERNEL32.dll
故障模块版本:6.0.6002.24367
故障模块时间戳:5ae3dcd9
异常代码:e0434352
异常偏移量:000000000001667d
操作系统版本:6.0.6002.2.2.0.272.7
区域设置 ID:1033
Windows 事件日志显示的信息很少:
错误应用程序 MyApp.exe,版本 1.0.0.0,时间戳 0x5bfc07f1,错误模块 KERNEL32.dll,版本 6.0.6002.24367,时间戳 0x5ae3dcd9,异常代码 0xe0434352,错误偏移量 0x000000000001667d,进程 ID 0x%9,应用程序启动时间 0x%10 .
应用程序:MyApp.exe
框架版本:v4.0.30319
说明:进程因未处理的异常而终止。
异常信息:异常代码e0434352,异常地址0000000077A6667D
堆栈:[这是空的]
有什么建议么?
解决方案
以防其他人偶然发现同样的问题,看起来微软的KB4457921更新以某种方式解决了这个问题。如果无法进行更新,请考虑将代码移植回 .net framework v. 3.5。