Dns.GetHostName VS2017上的C#配置错误异常和XmlException
在调试我的C#WinForm应用程序时,这个异常突然出现在以前运行正常的代码上。事实上,包含这段代码的类在启动时甚至没有初始化。我不知道发生了什么事。如果我取消对该代码的注释,则会在另一段代码上引发异常,就像项目中有其他错误一样。它看起来像是一个损坏的文件或是什么坏了的东西。我有点急着要送货,所以快把我逼疯了。以下是异常详细信息:Dns.GetHostName VS2017上的C#配置错误异常和XmlException,c#,exception,C#,Exception,在调试我的C#WinForm应用程序时,这个异常突然出现在以前运行正常的代码上。事实上,包含这段代码的类在启动时甚至没有初始化。我不知道发生了什么事。如果我取消对该代码的注释,则会在另一段代码上引发异常,就像项目中有其他错误一样。它看起来像是一个损坏的文件或是什么坏了的东西。我有点急着要送货,所以快把我逼疯了。以下是异常详细信息: System.Configuration.ConfigurationErrorsException HResult=0x80131902 Message=Er
System.Configuration.ConfigurationErrorsException
HResult=0x80131902
Message=Error en la inicialización del sistema de configuración
Source=System.Configuration
StackTrace:
at System.Configuration.ConfigurationManager.PrepareConfigSystem()
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.Dns.GetHostName()
at Sigma_Admin.Custom_Classes.SygmaServer.GetIPAddress()
at Sigma_Admin.Custom_Classes.SygmaServer..ctor()
at Sigma_Admin.Main..ctor()
at Sigma_Admin.Program.Main()
Inner Exception 1:
ConfigurationErrorsException: Root element is missing.
Inner Exception 2:
XmlException: Root element is missing.
编辑:
这是我的app.config文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Sigma_Admin.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
<userSettings>
<Sigma_Admin.Properties.Settings>
<setting name="defaultDataFile" serializeAs="String">
<value>null</value>
</setting>
<setting name="ownerAuth" serializeAs="String">
<value>jgd</value>
</setting>
<setting name="employeeAuth" serializeAs="String">
<value>ejecutivo</value>
</setting>
<setting name="interes" serializeAs="String">
<value>18</value>
</setting>
<setting name="adminIP" serializeAs="String">
<value>0</value>
</setting>
</Sigma_Admin.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="LibPowerCrypt4" publicKeyToken="43323c0f37428f68" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
无效的
jgd
电子商务
18
0
例外情况是,XML文件的顶层没有标记,包装了整个内容,因此格式不正确
堆栈跟踪表明这是来自ConfigurationManager
,它从可执行文件的app.config
文件(一个XML文件)检索内容
在XML编辑器中编辑该文件,并查找编辑器以突出显示文件格式中的任何错误;或者自己找到它——如果您理解XML,您应该能够发现它
否则,app.config
文件将被编译为*.exe.config
或Web.config
,从技术上讲,就是有故障的文件;因此,如果app.config
没有发现任何问题,请检查它变成的文件
最上面的标签应该是配置
。如果将configSections
配置为子元素,则该子元素必须是第一个子元素
将app.config添加到问题后编辑
我将你的app.config
添加到一个空的WinForms项目中(并调整名称空间以匹配)。Visual Studio随后通知我,它已将配置文件中的设置添加到我的Properties\settings.settings中;这对我来说很好。这样就排除了文件本身
尝试我上面尝试过的方法:用一个完全不同的名称创建一个新的WinForms项目,在app.config中复制并用新的项目名称替换“Sigma_Admin”,然后看看这是否有效(使用一些简单的代码来检索值)。如果你失败了,那么按照莱克斯利的建议,检查dotnetframework文件夹中的machine.config
如果上述方法适用于您,那么我怀疑它在加载任何现有设置时遇到问题-可能是“Sigma_Admin”设置在某种程度上发生了重大变化,并且与以前保存的设置不匹配?查看是否可以删除旧的配置文件:在Windows资源管理器地址栏中键入%LOCALAPPDATA%
,然后按回车键。从具有应用程序名称的文件夹中删除配置文件。然后转到%LOCALAPPDATA%\..\Roaming
并执行相同操作。然后尝试重新启动应用程序
在评论中添加更多信息后编辑
考虑到它在新项目中工作,而不是在旧项目中工作,我认为我们可以排除machine.config
因为您已经注意到它在调试中工作,而不是在发行版中,所以我想知道是否有一个配置转换文件用于一个配置,而不是另一个(),或者是一个正在修改文件的构建后步骤:默认情况下,这两个配置构建到不同的文件夹中。。。这两个配置文件的比较是否突出显示了什么
另外,您第一次提到安装程序。。。我将忽略这一点,因为听起来问题只是通过从VS调试而发生的。如果我错了,请更正我。检查您的
app.config
以及.NET Framework的machine.config
,查看它们是否被修改和损坏。理想情况下,切换到另一台机器,您的程序应该可以再次运行。已经彻底检查了*.exe.config
和app.config
,一切似乎都正常。我现在迷路了。刚刚添加了我的app.config文件。一切似乎都很好。你添加的信息不起作用。一个新项目确实有效,但主项目没有任何变化。我刚刚发现了一件重要的事情,通常我会在“Release”“Any CPU”上测试应用程序,而不是将Release改为Debug,它工作了!如果我继续这样做,并在需要发布测试时构建安装程序,事情可能会再次迅速发展,但为什么发布选项总是出现这个错误,这是一个很大的不确定性。@JoaquinGuevara另一个问题