【问题标题】:Where Does Visual Studio Store the Connection StringVisual Studio 在哪里存储连接字符串
【发布时间】:2018-02-09 14:03:40
【问题描述】:

问题是表适配器一直在引用我没有为其设置的连接字符串。当我转到数据集设计器中的每个数据表时,连接显示“MyConnectionString(settings)”。当我搜索错误的连接字符串时,VS 找不到。

在多个解决方案中重复使用的项目。我有三种配置:Debug、Staging 和 Release。每个配置都有自己的连接字符串。我的 app.config 如下所示:

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
   <connectionStrings configSource="connect.config"/>
   <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
   </startup>
   <startup useLegacyV2RuntimeActivationPolicy="true">
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
   </startup>
 </configuration>

每个配置文件如下所示:

<connectionStrings>
   <clear/>
   <add name="Properties.Settings.MyConnectionString" connectionString="Data Source=CorrectDataSourceforthisConfig\SQL;Initial Catalog=MyDB;Trusted_Connection=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>

在我的数据集中,我有这个 XML:

 <Connections>
      <Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="MyConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="MyConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.MyMenu.Properties.Settings.GlobalReference.Default.MyConnectionString" Provider="System.Data.SqlClient" />
    </Connections>

在我的 settings.designer.cs 中,我有这个:

    [global::System.Configuration.DefaultSettingValueAttribute("Data Source=CorrectDataSourceForDebug\SQL;Initial Catalog=MyDB;Integrated Security=True")]
    public string RMSConnectionString {
        get {
            return ((string)(this["MyConnectionString"]));
        }
    }

这个恶意连接字符串是从哪里来的?任何帮助、想法、建议和意见将不胜感激。

【问题讨论】:

  • 在打开连接之前,是否有一些第 3 方代码更改了连接字符串?也许它甚至会创建一个完全不同的连接实例?
  • 有趣的想法,但在这种情况下是不可能的。我只是想在它出现时填充表格适配器

标签: c# visual-studio connection-string


【解决方案1】:

连接字符串存储在您的 app.config 文件中,有时还存储在数据集中,有时存储在代码中。就我而言,我能够通过进入资源管理器并删除我意外创建的所有文件(即 Form1)并通过搜索我的解决方案并确保没有引用不正确的连接字符串来解决此问题。然后我删除了我在将这个项目包含在不同的解决方案中时使用的所有 .DLL 实例,并重新引用并重建了所有项目。

【讨论】:

    【解决方案2】:

    还有 machine.config,它是您系统上的主配置文件。这可能是您的隐藏连接字符串的存储位置。

    https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings-and-configuration-files

    machine.config 文件还包含一个 connectionStrings 部分,其中包含 Visual Studio 使用的连接字符串。在 Windows 应用程序的 app.config 文件中按提供程序名称检索连接字符串时,首先加载 machine.config 中的连接字符串,然后是 app.config 中的条目。在 connectionStrings 元素后立即添加 clear 会从内存中的数据结构中删除所有继承的引用,以便仅考虑本地 app.config 文件中定义的连接字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2014-05-22
      • 1970-01-01
      • 2022-11-06
      相关资源
      最近更新 更多