【问题标题】:"Unrecognized configuration section connectionStrings."“无法识别的配置节连接字符串。”
【发布时间】:2010-12-19 14:48:57
【问题描述】:

我一直在 VS2005 中进行一个项目,该项目利用本地连接到 Access DB。

在过去的一周中,我安装了 .NET framework 3.5 以用于其他项目以及 VS6。

我回到我的 VS2005 应用程序,突然出现了大问题:

在使用我的 OLEDB 连接的任何类的设计器中显示:

无法将“System.Configuration.DefaultSection”类型的对象转换为 键入“System.Configuration.ConnectionStringsSection”。隐藏

在 System.Configuration.Configuration.get_ConnectionStrings() 在 Microsoft.VisualStudio.Shell.Design.Serialization.ConfigurationHelperService.ReadConnectionStrings(字符串 configFileName、DocData configDocData、字符串前缀)在 Microsoft.VisualStudio.Editors.SettingsDesigner.AppConfigSerializer.Deserialize(DesignTimeSettings 设置、字符串 SectionName、DocData AppConfigDocData、MergeValueMode 合并模式,IUIService UIService)在 Microsoft.VisualStudio.Editors.SettingsGlobalObjects.SettingsFileGlobalObject.LoadSettings(字符串 文件名)在 Microsoft.VisualStudio.Editors.SettingsGlobalObjects.SettingsFileGlobalObject.BuildType() 在 Microsoft.VisualStudio.Editors.SettingsGlobalObjects.SettingsFileGlobalObject.GetObjectType() 在 Microsoft.VisualStudio.Shell.Design.GlobalType.get_ObjectType() 在 Microsoft.VisualStudio.Shell.Design.GlobalObject.GetHashCode() 在 Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GlobalKey.GetHashCode() 在 System.Collections.Generic.ObjectEqualityComparer1.GetHashCode(T obj) at System.Collections.Generic.Dictionary2.FindEntry(TKey key) 在 Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GetGlobalObjects(类型 基本类型)在 Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GetGlobalObjects() 在 Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetTypeFromGlobalObjects(字符串 名称,布尔 throwOnError,布尔 ignoreCase) 在 Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(字符串 名称,布尔 throwOnError,布尔 ignoreCase) 在 Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(字符串 名称,布尔 throwOnError)在 System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(ITypeResolutionService trs,字符串名称,Dictionary2 names) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary2 名称, CodeStatementCollection 语句,String 类名)在 System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager 经理,CodeTypeDeclaration 声明)在 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager 经理)在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager 序列化管理器)在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 f重新加载)

当我运行应用程序时,我在启动时遇到以下异常:

“无法识别的配置节连接字符串。”

在网上看,这些问题似乎通常与内置于 VS2005 并部署在 .net 1.1 框架上的东西有关;但这都是在 VS(不在 IIS 上)本地作为 Windows 窗体应用程序运行的。我已经尝试卸载并重新安装 VS2K5 无济于事。

有什么想法吗? 谢谢, 马特

【问题讨论】:

    标签: .net visual-studio configuration connection-string


    【解决方案1】:

    这是一个很老的帖子,我知道,但我最近也遇到了同样的问题,我已经修复了它:

     <configSections>
        <section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
        <section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" requirePermission="false"/>
     <configSections>
    

    在我的连接字符串之前:

        <connectionStrings>
            <add name="XXX" connectionString="Data Source=.;Initial Catalog=db;User Id=user;Password=pw;" providerName="System.Data.SqlClient"/>
          </connectionStrings>
    

    所以我的 app.config 看起来像:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
         <configSections>
            <section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
            <section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" requirePermission="false"/>
         <configSections>   
        <connectionStrings>
            <add name="XXX" connectionString="Data Source=.;Initial Catalog=db;User Id=user;Password=pw;" providerName="System.Data.SqlClient"/>
          </connectionStrings>
    </configuration>
    

    在 C# 中,我使用下面的代码来检索我的连接字符串:

    ConfigurationFileMap fileMap = new ConfigurationFileMap("myApp.config"); //Path to your config file
    Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
    this.connectionString = configuration.ConnectionStrings.ConnectionStrings["XXX"].ConnectionString;
    

    【讨论】:

    • 这对我有用,虽然 appSettings 部分不是必需的(除非你在配置中使用它)
    【解决方案2】:

    这是一个疯狂的猜测......但我想我以前在 web.config 中的 元素之前有一些东西时见过这个。例如,这会导致错误:

    <configuration>
      <connectionStrings [...] />
      <configSections>
        <sectionGroup name=[...] />
      </configSections>
    </configuration>
    

    元素需要先出现:

    <configuration>
      <configSections>
        <sectionGroup name=[...] />
      </configSections>
      <connectionStrings [...] />
    </configuration>
    

    可能不是导致您的问题的原因,但我想我会提到它...

    【讨论】:

    • 感谢您的回复!我不相信是这样,我的 app.config 如下: 配置>
    • 我认为有些地方配置错误 - 不幸的是,卸载/安装东西似乎并不能解决它。即使我尝试创建一个新的 DataSource 连接 - 在连接向导中 - 我选择 OLE DB 连接,选择 .mdb 并单击“确定”,我得到一个弹出窗口说“异常已被一个目标抛出调用。”就是这样!很郁闷....
    • 我想弄清楚为什么我的 App.config 不适用于某些自定义类型 - 这就是问题所在。谢谢!
    【解决方案3】:

    我也遇到过同样的问题。请检查您的 machine.config 文件。

    <configuration>
     <system.windows.forms jitDebugging="true"/>
     <configSections>
      <section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
      <section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" requirePermission="false"/>
    

    当我删除了

    ..system.windows.forms jitDebugging="true"/>

    它再次运行良好..

    【讨论】:

      【解决方案4】:

      就我而言,这是骆驼案的问题。 &lt;connectionStrings&gt;&lt;connectionstrings&gt; 都可以工作,但在部分名称和连接字符串本身中应该是相同的。

        <connectionStrings>
          <add name="default"
               connectionString=[...] />
        </connectionStrings>
      

      【讨论】:

        猜你喜欢
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多