【问题标题】:.NET Winforms app dies on startup.NET Winforms 应用程序在启动时死机
【发布时间】:2011-05-08 10:23:31
【问题描述】:

我有一个用 C# 编写的 .NET Winforms 应用程序,它可以在任何地方运行,但只能在一台特定的机器上运行。在那台机器上,它没有启动就死了。没有错误消息,但将以下内容写入事件日志:

类型:错误

来源:.NET Runtime 2.0 错误报告

描述:错误应用程序 myapp.exe,版本 4.2.0.0,标记 4bcf05d0,错误模块 kernel32.dll,版本 5.2.3790.4480,标记 49c51f0a,调试? 0,故障地址0x0000bef7。

这台机器似乎没有什么奇怪的地方——它是使用 VSphere 创建的众多克隆之一,并且没有出现任何其他问题。其他克隆运行我的应用程序没有任何问题。它是带有 .NET Framework 3.5 SP1 的 Windows Server 2003 SP2,运行 Citrix,它在克隆后重新安装以采用新名称(与其他克隆一样)。

关于如何诊断或捕获问题的任何建议?

另外,我即将发布我的应用程序的新版本,我可以对新版本做些什么来提供有关此类问题的更多信息?


编辑:谢谢大家的回答,不幸的是机器的系统管理员决定从头开始重建它,问题就消失了。所以我可能永远不会知道问题出在哪里。

【问题讨论】:

  • 您是否尝试过从命令提示符运行应用程序?有时错误消息只显示在那里。
  • 您的应用程序是使用 .NET Framework 2.0 还是 3.5 SP1 编译的?
  • @dtb 我会请他们现在试试。 @Stefan P. .NET Framework 3.5 SP1
  • @dtb 谢谢你,不幸的是,命令提示符下没有任何类型的消息显示。

标签: c# .net winforms


【解决方案1】:

在该机器上安装适用于 Windows 的调试工具,并使用 WinDbg 启动您的应用程序。然后它应该告诉发生了什么异常。

【讨论】:

  • 感谢您的回答,不幸的是,这是一个生产服务器,管理员暂时不情愿。我会记住这一点,以防它变得更加紧急(或者机器从生产中退役)。
  • Windows 调试工具也可以先安装在另一台机器上(相同位数),然后(整个安装文件夹)复制到这个生产机器上。
  • 我最终无法尝试您的答案,但我认为它最有可能在这种情况和类似情况下有用。
  • 删除调试帮助我解决了这个问题 - 我按照这里的说明进行操作 codeproject.com/Articles/146838/…
【解决方案2】:

如果错误与环境有关(例如缺少程序集),则应用程序将无法到达可以捕获和记录它的地步。

我将创建一个新的控制台应用程序,然后将此类应用程序加载到新的 AppDomain 并使用 ExecuteAssembly 运行它。如果错误是 .NET 异常,您将能够捕获它们并写入控制台窗口。

【讨论】:

  • 谢谢,我先试试看管理员能不能让我运行一下。
【解决方案3】:

您的 MyApp.Exe.Config 是正确的 XML 文件吗?在 Visual Studio 中打开它,查看 XML 格式是否有任何错误。

【讨论】:

  • 感谢您的回答,不幸的是这并没有解决它。 .config 在 Visual Studio 中验证,我还尝试重新安装应用程序(从而返回默认值)并将其替换为来自另一台正在运行的服务器的默认文件。
  • 太糟糕了,我遇到过一些像你这样的症状的问题。
猜你喜欢
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2013-08-09
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多