Dns.GetHostName VS2017上的C#配置错误异常和XmlException

Dns.GetHostName VS2017上的C#配置错误异常和XmlException,c#,exception,C#,Exception,在调试我的C#WinForm应用程序时,这个异常突然出现在以前运行正常的代码上。事实上,包含这段代码的类在启动时甚至没有初始化。我不知道发生了什么事。如果我取消对该代码的注释,则会在另一段代码上引发异常,就像项目中有其他错误一样。它看起来像是一个损坏的文件或是什么坏了的东西。我有点急着要送货,所以快把我逼疯了。以下是异常详细信息: System.Configuration.ConfigurationErrorsException HResult=0x80131902 Message=Er

在调试我的C#WinForm应用程序时,这个异常突然出现在以前运行正常的代码上。事实上,包含这段代码的类在启动时甚至没有初始化。我不知道发生了什么事。如果我取消对该代码的注释,则会在另一段代码上引发异常,就像项目中有其他错误一样。它看起来像是一个损坏的文件或是什么坏了的东西。我有点急着要送货,所以快把我逼疯了。以下是异常详细信息:

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另一个问题