[英]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.config
或Web.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.