簡體   English   中英

Dns.GetHostName VS2017上的C#ConfigurationErrorsException和XmlException

[英]C# ConfigurationErrorsException and XmlException on Dns.GetHostName VS2017

在調試我的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>

例外是,XML文件格式不正確,因為XML文件的頂層沒有標簽,因此無法包裝全部內容。

堆棧跟蹤表明這來自ConfigurationManager ,后者從可執行文件的app.config文件(這是XML文件)中檢索內容。

在XML編輯器中編輯該文件,然后尋找突出顯示文件格式錯誤的編輯器; 或自己找到它-如果您了解XML,則應該能夠找到它。

如果做不到這一點,在app.config的文件被編譯到任何一個*.exe.configWeb.config ,並從技術上講, 是有問題的文件; 因此,如果app.config沒發現問題,請檢查該文件是否變為。

最上面的標簽應該是configuration 如果您將configSections作為子元素,則該元素必須是第一個子元素。

將app.config添加到問題后進行編輯

我將您的app.config添加到一個空的WinForms項目中(並調整了名稱空間以使其匹配)。 然后,Visual Studio通知我,它已將配置文件中的設置添加到我的Properties \\ Settings.settings中。 對我來說很好 這樣就排除了文件本身。

嘗試上面我嘗試的方法:使用完全不同的名稱創建一個新的WinForms項目,將其復制到您的app.config中,並用新的項目名稱替換“ Sigma_Admin”,然后查看是否可行(輸入一些簡單的代碼來檢索值)。 如果那對您失敗,請按照LexLi的建議檢查dot net framework文件夾中的machine.config

如果上述方法對您有效,那么我懷疑加載現有設置時會遇到麻煩-也許“ Sigma_Admin”設置已以某種方式發生了很大變化,並且與以前保存的設置不匹配? 查看是否可以刪除舊的配置文件:在Windows資源管理器地址欄中鍵入%LOCALAPPDATA% ,然后按回車鍵。 使用應用程序名稱從文件夾中刪除配置文件。 然后轉到%LOCALAPPDATA%\\..\\Roaming並執行相同的操作。 然后嘗試重新啟動您的應用程序。

在評論中添加更多信息后進行編輯

鑒於它適用於新項目而不是舊項目,我認為我們可以排除machine.config

既然您已經注意到它可以在Debug中運行,而不能在Release中運行,那么我想知道是否有一個配置轉換文件用於一個配置,而不是另一個配置( 例如 ),或者是否存在用於修改文件的構建后步驟:默認情況下,這兩個配置內置到不同的文件夾中...這兩個配置文件的比較是否突出顯示了任何內容?

另外,您是第一次提到安裝程序...我將忽略它,因為聽起來問題只是通過VS調試而發生。 如果我錯了糾正我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM