一台电脑上的.NET应用程序已损坏,无法处理异常

一台电脑上的.NET应用程序已损坏,无法处理异常,.net,exception,.net-2.0,.net,Exception,.net 2.0,我有一个.NET2.0应用程序,里面没有什么花哨的东西。它在我安装或复制到的每台PC上都能工作到昨天,无论是安装了2.0、3.0、3.5还是3.5 SP1,无论是Win2000、XP还是Win7(总共100多台机器) 昨天我做了我的正常安装程序,想启动它一次,以检查是否一切正常…但它没有。程序死机了,留下了一个没有信息的“你想报告这个错误吗?”对话框。问题是我的应用程序的Main(String[]args)例程中出现异常 事件查看器将显示以下条目: Event Type: ErrorEven

我有一个.NET2.0应用程序,里面没有什么花哨的东西。它在我安装或复制到的每台PC上都能工作到昨天,无论是安装了2.0、3.0、3.5还是3.5 SP1,无论是Win2000、XP还是Win7(总共100多台机器)

昨天我做了我的正常安装程序,想启动它一次,以检查是否一切正常…但它没有。程序死机了,留下了一个没有信息的“你想报告这个错误吗?”对话框。问题是我的应用程序的
Main(String[]args)
例程中出现异常

事件查看器将显示以下条目:

  Event Type: ErrorEvent
  Source: .NET Runtime 2.0 Error Reporting
  Event Category: None
  Event ID: 5000
  Date: 05/05/2010
  Time: 16:09:09
  User: N/A
  Computer: myClientPC
  Description:
  EventType clr20r3, P1 apomenu.exe, P2 1.4.90.53, P3 4bdedea4,
  P4 system.configuration, P5 2.0.0.0, P6 4889de74, P7 1a6, P8 136,
  P9 ioibmurhynrxkw0zxkyrvfn0boyyufow, P10 NIL.
好吧,好消息。经过大量搜索,我终于能够获得有关此异常的更多信息(通过直接在
My.MyApplication.New()、Application.Designer.vb
中添加
UnhandledExceptions
的处理程序):

在这一点上,我被困住了……我没有主意了。我没有使用框架中的任何类型的配置系统(没有对system.configuration的引用,也没有生成或分发MyAppnameHere.exe.config,我以前也没有见过这个错误)。我还发现了这个bug(不过是在另一个上下文中)。但看起来,他们连看都不看

非常感谢您的帮助

编辑:我正在使用Visual Studio 2008 Prof。。崩溃发生在客户机上的发布和调试版本中。我担心直接在这台机器上调试应用程序是不可能的,300多英里,而且他们只有两台计算机可以使用

Edit2:其他.NET应用程序工作正常

Edit3:在Andrey指出这一点后,我还查看了内部异常(我总是忘了这个东西的存在):


我删除了此部分,现在一切正常…但现在有一个问题困扰着我:为什么其他应用程序可以工作?

看起来您的应用程序正在尝试设置套接字,可能客户端PC有防火墙阻止套接字,或者由于某些安全软件,代码被阻止运行。
您是否尝试过以管理员身份运行代码并禁用所有安全软件?

该错误表示.config文件有问题。这可能是应用程序的配置文件,也可能是machine.config

我建议在那台机器上卸载/重新安装.net



另一件要尝试的事情是看看用户是否可以以提升的身份运行你的应用程序(以管理员身份运行)。配置系统可能试图访问用户无权访问的文件。如果他们可以以管理员身份运行,请确定配置系统访问了哪些文件,然后指示用户允许其帐户权限访问这些文件。

您是否尝试删除该文件“..\文档和设置\\本地设置\应用程序数据\”?在更高版本的Windows上,路径可能不同。

我猜机器的框架安装不好


尝试卸载,然后重新安装.Net。

从调用堆栈判断,频道似乎是由于一个模糊的原因而配置不正确,从另一个角度看,可能是在你不知道的情况下网络发生了变化——毕竟你说它起作用了,我只是忍不住想,系统范围的配置文件(machine.config)有一个不正确的设置,可能是由于权限的原因


系统范围的配置位于.NET文件夹深处的windows文件夹中…我猜运行时没有正确启动…您是否尝试重新启动.NET运行时优化服务?

在windows 2008 R2计算机上,我们出现了类似症状。我们讨论了从功能安装.NET framework 3.5.1解决了我们的问题。这就是两台机器之间的区别,一台正在工作,另一台(缺少3.5.1)没有。当我将我的应用程序部署到生产服务器时,我遇到了这个错误,在我的本地开发机器上没有产生错误。所以我重新认识了原因:我的服务器有一个x64操作系统,我的应用程序是用默认的x86平台编译的,更改为“任意CPU”选项,没有更多的错误

这并不能解释消息和调用堆栈。只有Avra AdvvIR和Windows防火墙正在运行,都关闭,同样的例外。也是我的第一印象……我认为这是“最后的手段”,因为远程位置和事实上,我们不服务该客户端的硬件。@博比,这更好。他们必须自己动手。@Bobby有内在的例外吗?@Andrey:你是我的英雄@安德烈:我刚刚完成了第三次编辑。机器配置文件被破坏了。根据Andrey的提示,我发现
machine.config
有一个无法解析的部分。所以你是对的。不过,我不明白为什么其他.NET程序也在运行,特别是因为我编写了其他应用程序,而且它们都与.NET 2.0相关联/
  System.Configuration.ConfigurationErrorsException

  Configuration system failed to initialize

     at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
     at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
     at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
     at System.Configuration.ConfigurationManager.GetSection(String sectionName)
     at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
     at System.Net.Configuration.SettingsSectionInternal.get_Section()
     at System.Net.Sockets.Socket.InitializeSockets()
     at System.Net.Sockets.Socket.get_SupportsIPv4()
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.get_HostName()
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.RegisterChannel(Boolean SecureChannel)
     at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
     at MyAppNameHere.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Line 81.
  System.Configuration.ConfigurationErrorsException

  Unknown configraution directive "system.serviceModel". (c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config line 145)

     at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
     at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
     at System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
     at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)