"无法识别的配置部分connectionStrings."

Mat*_*y U 3 .net configuration connection-string visual-studio

我一直在VS2005中开发一个项目,该项目利用Access数据库的本地连接.

在过去的一周里,我安装了.NET framework 3.5以供不同的项目和VS6使用.

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

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

无法将类型为"System.Configuration.DefaultSection"的对象强制转换为"System.Configuration.ConnectionStringsSection".隐藏

在Microsoft.VisualStudio.Editors.SettingsDesigner.AppConfigSerializer.Deserialize(DesignTimeSettings设置,Microsoft.VisualStudio.Shell.Design.Serialization.ConfigurationHelperService.ReadConnectionStrings(String configFileName,DocData configDocData,String prefix)的System.Configuration.Configuration.get_ConnectionStrings()中. Microsoft.VisualStudio.Editors.SettingsGlobalObjects上Microsoft.VisualStudio.Editors.SettingsGlobalObjects.SettingsFileGlobalObject.BuildType()的Microsoft.VisualStudio.Editors.SettingsGlobalObjects.SettingsFileGlobalObject.LoadSettings(String fileName)中的字符串SectionName,DocData AppConfigDocData,MergeValueMode mergeMode,IUIService UIService) Microsoft.VisualStudio.Shell.Design.GlobalHashCode()at Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GlobalKey.GetHashCode()的Microsoft.VisualStudio.Shell.Design.GlobalType.get_ObjectType()位于Microsoft.VisualStudio.Shell.Design.GlobalType.get_ObjectType()的.SettingsFileGlobalObject.GetObjectType()在System.Collections.Generic.ObjectEqualityComparer 1.GetHashCode(T obj) at System.Collections.Generic.Dictionary2.FindEntry(TKey键)位于Microsoft.VisualStudio.Shell.Design.CignDom.AggregateTypeResolutionService的Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GetGlobalObjects()中的Microsoft.VisualStudio.Shell.Design.GlobalObjectService.GetGlobalObjects(Type baseType). Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType上的Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name,Boolean throwOnError,Boolean ignoreCase)中的GetTypeFromGlobalObjects(String name,Boolean throwOnError,Boolean ignoreCase)(2 names) at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, DictionarySystem.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager )的System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(ITypeResolutionService trs,String name,Dictionary 2 names,CodeStatementCollection statements,String className)中的String name,Boolean throwOnError),CodeTypeDeclaration声明)在System.ComponentMo Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio中的Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)中的del.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager). TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)

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

"无法识别的配置部分connectionStrings."

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

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

Vin*_*n.X 8

这是一个非常古老的帖子,我知道,但我最近遇到了同样的问题,我通过以下方式修复了它:

 <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>
Run Code Online (Sandbox Code Playgroud)

在连接字符串之前:

    <connectionStrings>
        <add name="XXX" connectionString="Data Source=.;Initial Catalog=db;User Id=user;Password=pw;" providerName="System.Data.SqlClient"/>
      </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

所以我的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>
Run Code Online (Sandbox Code Playgroud)

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

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


Ric*_*ier 5

这是一个疯狂的猜测......但我想我之前在你的web.config中的<configSections>元素之前有了一些东西.例如,这会导致错误:

<configuration>
  <connectionStrings [...] />
  <configSections>
    <sectionGroup name=[...] />
  </configSections>
</configuration>
Run Code Online (Sandbox Code Playgroud)

<configSections>元素需要先来:

<configuration>
  <configSections>
    <sectionGroup name=[...] />
  </configSections>
  <connectionStrings [...] />
</configuration>
Run Code Online (Sandbox Code Playgroud)

可能不是什么导致你的问题,但我想我会提到它...