.NET应用程序有时会在应用程序启动时崩溃(无法访问.exe)

时间:2013-12-10 08:38:31

标签: c# .net .net-3.5

我们目前在我们的一台客户计算机上遇到以下软件行为:


简短版:

我们的.NET应用程序有时在从客户端执行时立即崩溃,可执行文件位于单独的文件服务器上。

发生这种情况时,事件日志中的消息声称无法访问可执行文件。但是,桌面快捷方式总是找到可执行文件。

请注意,这会发生在几个不同的.NET可执行文件中。

这引导我们进行以下


问题:

Windows如何始终访问可执行文件(该过程在崩溃时在任务管理器中可见)但.NET Framwork有时只能访问它?请注意,我们的客户有时会因未知原因出现网络问题 而且,更重要的是,在这种情况下,我们可以做些什么来防止崩溃或者至少显示一个自己的消息框?

有关详细信息,请阅读以下内容:


详细信息:

我们的C#可执行文件位于虚拟化文件服务器(Windows Server 2003)上,并使用.NET 3.5 SP1进行编译。

当尝试使用来自同一网络中的客户端的桌面/开始菜单快捷方式执行软件时,可执行文件有时(大约尝试次数的2-5%)崩溃,即用户收到“< our软件>遇到错误,需要关闭“消息。作为参考,客户端也安装了.NET 3.5 SP1。

进一步调查表明,即使执行了一行代码,程序也会崩溃(即永远不会达到main()方法。)

在Windows事件日志中,有两条消息,第一条消息相对无用(德语免费翻译):

  

应用程序失败,版本0.0.0.0,模块未知失败,版本0.0.0.0,失败地址0x79002c42。

第二个说的是:

  

由于以下原因之一,无法访问文件\\< server> \<软件> \< executable> .exe的路径:网络连接存在问题,驱动器所在的位置文件分别存储在计算机上安装的磁盘驱动程序,或者驱动器丢失。由于此错误,程序< executable> .exe已关闭。

     

[关于做什么的一些建议]

     

更多信息:
错误代码:C0000008
驱动器类型:4

现在第一个建议是再次尝试打开文件,因为情况可能是暂时的问题。 虽然这个“解决方案”有效,但是有一个应用程序崩溃消息是不可接受的,特别是当我们的一个可执行文件调用另一个时。

如果您无法直接回答上述问题,但您知道如何进一步调查此问题,请随时发表评论或回答。但请注意,我们不允许在客户客户端甚至服务器上安装任何类型的第三方软件。可以使用便携式应用程序(更准确地说,可以将软件复制/粘贴到单个文件夹中,并且不会将任何类型的文件部署到该单个文件夹之外的任何位置)。

1 个答案:

答案 0 :(得分:1)

如果是我,我会首先看看我是否可以在本地重新创建问题并完全消除网络。这一切都是为了建立线索,希望能够让您更接近解决方案。其他值得考虑的事情是:

  1. 32位对比64位,您的编辑目标是什么?
  2. 服务器上是否运行任何时髦的脚本?
  3. 它在不同服务器上的行为方式是否相同?
  4. 也许尝试从服务器中删除.NET框架然后 重新安装
  5. 确保事件日志中没有任何其他错误 系统的其他部分
  6. 服务器上是否有防火墙或防病毒软件 干扰申请
  7. 我也会在服务器上运行内存测试器,也可能 chkdsk但这只是一个普遍的事情来消除当然不会伤害
  8. 我甚至会换掉网络负责人(极不可能这样)
  9. 尝试将应用程序放在不同的UNC共享上,看看你是否 可以从那里重新创建
  10. 消除过程是游戏的名称,即使最不可能的候选人也不应该被忽视。