我有一個使用WPF和SQL Server 2008 R2的工作數據庫應用程序,兩年來一直從App.Config文件獲取它的SQL Server連接字符串。幾天前在一臺開發機器上,它開始忽略App.Config文件的connectionString,現在正在使用來自其他地方的字符串(看起來像是settings.settings或DBML文件)。爲什麼我的Visual Studio 10停止對我的SQL連接字符串使用App.Config?
爲什麼會這是發生的事情,我怎麼能得到它停止這樣做?
在app.config開始時是這樣的:
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<connectionStrings>
<add name="DronzApp.Properties.Settings.DronzAppConnectionString"
connectionString="Server=dronz.db.123.dronzdbserver.com;Database=dronzdb;User ID=dronz;Password=secretsauce;"
providerName="System.Data.SqlClient" />
</connectionStrings>
編輯:感謝來自你們的建議提供更多信息和在哪裏看。我不知道WPF應用程序在App.Config或其他任何地方應該看到的信息的位置,但是直到我知道這裏有更多部分:
我的程序的第一件事情之一正在測試數據庫(現在失敗)。它確實是正確的之前,它調用的自動生成功能的InitializeComponent(),其自動生成的代碼是:
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/DronzApp;component/ui/startwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\..\UI\StartWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
我開始窗口構造函數調用的InitializeComponent();然後測試與線路數據庫:
INT HMM = App.db.Dronz_FooTable.Count();
其中App.db處於app.xaml.cs文件所定義的數據上下文:
公共靜態DronzDataDataContext分貝=新DronzDataDataContext();
其中DronzDataDataContext在自動生成的代碼所限定LINQ到SQL如:
公共部分類DronzDataDataContext:System.Data.Linq.DataContext ...
public DronzDataDataContext() :
base(global::DronzApp.Properties.Settings.Default.DronzConnectionString, mappingSource)
{
OnCreated();
}
哪用於注意app.config文件,現在不用。當我捕獲數據庫異常(這是關於數據庫版本問題,因爲它試圖使用錯誤的SQL服務器)並查看連接字符串時,它向錯誤的SQL Server請求文件而不是正確的連接字符串。它使用的連接字符串似乎與Linq-to = SQL在導入數據庫模式時創建的DBML文件相匹配,或者與settings.settings中的字符串匹配(這是一個文件,我不太明白它來自哪裏或我應該做什麼或不做什麼)。
目前沒有足夠的信息來幫助您找到連接字符串的來源。配置文件可以從應用程序讀取,而不是將數據「推送」到應用程序中。您需要查看代碼才能找到正在創建數據庫連接/命令的位置,以查找從哪裏讀取連接字符串。 – ulty4life 2012-07-05 21:23:43