2009-04-24 64 views
0

如果我要從應用程序中的配置文件中讀取連接字符串,並且需要能夠在應用程序從dev移動到uat時更改連接字符串,那麼應該使用設置文件所有那些連接字符串被編譯到程序集中,我將從環境變爲環境,使得初始連接字符串變得過時?.Net和默認設置

這裏的最佳做法是什麼?

編輯:

我要求一般,因爲我有兩個web服務和應用程序SmartClient的。

+0

請澄清,這是一個Web應用程序或桌面應用程序嗎? – 2009-04-24 13:45:31

+0

無關緊要,配置文件名稱不同,但這是差異。 – Lucero 2009-04-24 13:48:10

+0

問是因爲加密web.configs很容易。但部署的桌面應用程序和加密的應用程序配置不是 – 2009-04-24 13:50:59

回答

1

我通常把連接字符串到外部配置文件,我是從部署中排除: 在web.config中:

<connectionStrings configSource="connections.config"></connectionStrings> 

connections.config:

<?xml version="1.0"?> 
<connectionStrings> 
    <add name="connectionName" connectionString="[connection string goes here]"/> 
</connectionStrings> 

[更新]這假設你正在建立一個網站;否則它當然是「App.config」,而不是「web.config」

-1

看起來你的鍵盤上沒有點('。')按鈕。訪問該商店購買一個新的。

我不確定我是否瞭解您的問題。使用應用程序可執行文件旁邊的config/settings文件。讀取該文件的連接字符串。如果缺少該文件,請使用默認網址創建一個新的配置文件?

0

編譯配置設置讓我畏縮。

但是如果你擔心你的配置被壞人看到。

對其進行加密:http://www.4guysfromrolla.com/articles/021506-1.aspx

請記住,加密是基於計算機密鑰,這樣是行不通的這麼好部署桌面應用程序。

1

我們使用config文件的連接字符串部分,並且有一個類似字符串名稱:

AppDataInDev和應用程序數據

而且在config文件,我們有一個在應用程序設置稱爲InDev關鍵

在我們的數據層中,我們檢查InDev的值。如果爲true,則使用AppDataInDev初始化數據層,否則使用AppData。

這使得過渡到管理的過程變得簡單。當發佈到prod時,將InDev的值切換爲False,然後完成。 (如果是ASP.Net應用程序,請在同時將CompilationDebug切換爲False的同時執行此操作。)