我有一个没有任何花哨的.NET 2.0应用程序。无论是安装了2.0,3.0,3.5还是3.5 SP1,无论是Win2000,XP还是Win7(总共100个),它一直工作到昨天我安装或复制的所有 PC +机器)。
昨天我做了正常的安装程序,想要启动一次,检查一切是否正常......但事实并非如此。该程序很难崩溃,让我没有信息“你想报告这个错误吗?”对话。问题是我的应用程序的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.
嗯......很棒的信息。经过大量搜索后,我终于能够获得有关此异常的更多信息(通过在UnhandledExceptions
中直接添加My.MyApplication.New(), Application.Designer.vb
的处理程序):
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,并且从未生成或分发过MyAppnameHere.exe.config,也没有看过此错误)。我还发现a bug report at Microsoft (Google Cache)关于这个bug(在另一个上下文中)。但看起来,他们甚至都不会看它。
非常感谢每一位帮助!
编辑:我正在使用Visual Studio 2008 Prof ..崩溃发生在客户端计算机上的Release-和Debug-Build中。直接在这台机器上调试应用程序是不可能的,我担心,300多英里,他们只有两台计算机可以使用。
Edit2:其他.NET应用程序运行正常。
编辑3:在安德烈指出之后,我也看了一下内部异常(我总是忘记这件事存在):
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)
我删除了这一部分,现在一切都正常工作......但是现在有一个问题困扰着我:为什么其他应用程序有效?
答案 0 :(得分:6)
在Windows 2008 R2机器上,我们有类似的症状。我们发现从功能安装.NET framework 3.5.1解决了我们的问题。这是两台机器之间的区别,其中一台机器正在另一架机器上运行(缺少3.5.1)。
答案 1 :(得分:3)
该错误表示.config文件有问题。这可能是应用程序的配置文件,也可能是machine.config。
我建议在该计算机上卸载/重新安装.net。
要尝试的另一件事是查看用户是否可以升级运行您的应用程序(以管理员身份运行)。配置系统可能正在尝试访问用户无权访问的文件。如果他们可以作为管理员运行,请确定配置系统访问哪些文件,然后指示用户允许他们对这些文件的帐户权限。
答案 2 :(得分:1)
通过调用堆栈判断,由于一个不明原因,它看起来好像是错误配置了通道,当你以另一种方式看待它时,也许在你不知情的情况下网络发生了变化 - 毕竟你做了说它有用,我不禁想到系统范围的配置文件(machine.config)设置不正确可能是由于权限?
系统范围的配置位于.NET文件夹深处的windows文件夹中...我猜运行时没有正常启动...您是否尝试重新启动.NET运行时优化服务?
答案 3 :(得分:0)
看起来您的应用程序正在尝试设置套接字,也许客户端PC具有阻止套接字的防火墙,或者由于某些安全软件而阻止代码运行。 您是否尝试以管理员身份运行代码并禁用所有安全软件?
答案 4 :(得分:0)
您是否尝试删除文件“... \ Documents and Settings \< user> \ Local Settings \ Application Data \< application_name> ... \ user.config”,详见http://support.microsoft.com/kb/956762/en-gb ?在以后的Windows版本中,路径可能会有所不同。
答案 5 :(得分:0)
我猜机器的框架安装不好。
尝试卸载,然后重新安装.Net。
答案 6 :(得分:0)
当我将我的应用程序部署到生产服务器时,我收到此错误,在我的本地开发机器上没有产生错误。所以我重申了原因:我的服务器有一个x64操作系统,我的应用程序是使用默认的x86平台编译的,改为'任何CPU'选项,没有更多的错误!!!