2009-08-19 36 views
1

如果你有一個類庫項目作爲你的DAL,它有一個帶連接字符串的App.Config文件,我該如何強制它使用該配置文件?它不斷從我的Web應用程序項目中的web.config中獲取值。配置瘋狂,我有一個app.Config,但我的對象看起來web.Config

DAL項目使用LinqToSql。當我通過引用的DAL類庫項目在我的Web應用程序中實例化DataContext對象時,是否可以使用它的app.Config connectionstrings?它似乎忽略此文件,並嘗試從web.Config connectionstrings節點中獲取連接字符串。這裏沒有連接字符串。

任何幫助表示讚賞。一位同事提到在DAL和嵌入式資源中製作app.Config。這聽起來像個好主意嗎?

感謝, 〜CK在聖地亞哥

+0

你能告訴我們你正在使用的文件夾結構和DLLs/configs的位置嗎? – cjk 2009-11-10 08:23:53

回答

3

Web應用程序始終使用web.config中。桌面應用程序總是使用app.config。

+0

如果您需要覆蓋它,我會將配置設置移至web.config或可以手動管理和部署的XML文件。 – 2009-08-20 00:36:20

1

我該如何強制它使用該配置文件?它不斷從我的Web應用程序項目中的web.config中獲取值。

你不行。如果使用System.Configuration類,它們將始終從活動應用程序的.config文件(適用於可執行文件的app.config,適用於asp.net網站的web.config)中提取。

變通方法包括使用文件I/O來讀取設置(而不是System.Configuration名稱空間)或將DAL配置信息放入適當的.config文件(更常見的選項)中。

0

我不知道,但看看那:

using System.Configuration; 

ExeConfigurationFileMap Map = new ExeConfigurationFileMap(); 

Map.ExeConfigFilename = FileName; 

Configuration Conf = ConfigurationManager.OpenMappedExeConfiguration(Map, ConfigurationUserLevel.None); 

AppSettingsSection section = (AppSettingsSection)Conf.GetSection("???"); 
0

以下是我認爲一個* config文件的。假設你在你的DAL方法:

DoSomething的(connectString中,SQLDIALECT,BusinessObject的)

由於connectString中和SQLDIALECT不每次調用此方法改變,這將是很好能夠消除這些參數並通過其他方式獲取這些參數。

那麼,* .config文件就是出於這個原因 - 它們不僅僅是環境特定的,它們也是特定於應用程序的。這是因爲您的Web應用程序可以對每個方法調用說,「嘿,大家,連接字符串=」...「和SqlDialect =」...「,直到我說不。假設您希望一個應用程序使用一組憑據登錄到SQL,另一個應用程序使用另一組憑據(如有必要,使用不同的許可證),以便DBA可以跟蹤哪個應用程序正在執行什麼操作(使用另一組憑據如果他/她這樣選擇)。那麼,* .config文件就會發生這種情況。

這就是您運行的應用程序提供* .config文件的原因。因此,只需從DAL的app.config文件中刪除所有內容並將其粘貼到Web.config文件中,然後刪除App.config。之後你應該很好。