這個功能我記得好像在ASP.NET 2.0就有了,今天剛好有需求來實驗一下並記錄。其實最正規的做法應該是對web.config加密才對,這種分離web.config設定檔案的機制頂多就是在這個GIT流行的年代,可以減少一點點誤把機敏資訊流出去的可能而已,對於安全效果上面來說我覺得幾乎是零。
對了,有一點網路上的謬論值得一提,我有在相關的討論中看到有人提出還有一個優點,就是進行分離web.config後若跑去子屬設定檔新增修改連線字串,不會造成ASP.NET重啟導致SESSION跳掉,這個我只能說想太多了~不可能!修改子屬設定檔SESSION依然會被清空!
首先先在connectionStrings節點中利用configSource把檔案切分出去,並放在bin目錄下一個名為db.config的XML設定檔。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings configSource="bin\db.config" /> <system.web> <compilation debug="true" targetFramework="4.8"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> </assemblies> </compilation> <pages controlRenderingCompatibilityVersion="4.0"/> </system.web> </configuration>
在db.config的XML設定檔補入下列內文:
<?xml version="1.0" encoding="utf-8" ?> <connectionStrings> <clear /> <add name="dbA" connectionString="server=192.168.1.1;uid=User1;pwd=UserPwd1" providerName="System.Data.SqlClient"/> <add name="dbB" connectionString="server=192.168.1.2;uid=User2;pwd=UserPwd2" providerName="System.Data.SqlClient"/> </connectionStrings>
That's it! 就這麼簡單,但我個人對於這種作法的認為是宣示意義大於實質意義。放在bin目錄下的優點是: