2012-10-08 35 views
0

我懷疑這是可能的,但我們的Web應用程序之一是由客戶使用,他們有一個實時/測試數據庫。目前更新必須轉到這兩個文件夾,因爲兩者都有目錄設置,並且web.config文件指向實況或測試。相同的應用程序和目錄,但不同的web.config文件?

有什麼方法可以使用IIS中的一個目錄,但是2個web應用程序每個都使用不同的web.config文件或類似的東西,因此只需要更新1個位置?

回答

0

你可以,但你必須以一種稍微不同的方式來維護事情。你沒有告訴我們的是:你使用配置值分離的唯一地方是connectionStringsappSettings?還是還有其他的區別?

然後,您真的需要從單獨的配置文件中加載這些值,不會被現有配置文件引用,也不會使用System.Configuration.ConfigurationManager或其任何名稱空間/實用程序加載這些值。下一步是使用傳入URL來分離設置類正在使用的數據,以瞭解要加載的兩個數據點中的哪一個。否則,如果你是以這種方式編寫應用程序,這是完全有效的(只是有點違揹我們在世界其他地方所做的)。

+0

它們是連接文件中,主要有兩個目錄具有完全相同的文件,但不同的connectionString – user1166905

+0

不,不能與「內置庫」來完成。微軟並沒有編寫這樣的應用程序結構,所以公平起見,你只需要編寫自己的加載程序。 – jcolebrand

+0

[嘆氣]這麼想,謝謝 – user1166905

0

根據您的數據庫連接系統,您可以提供基於用戶設置而不是基於web.config的連接字符串?必須有某種方式來決定用戶想要使用哪個數據庫,這可以像按鈕或下拉列表一樣簡單,用於選擇,或者使系統保持兩個文件夾,但使用URL路徑使它們指向相同文件。然後當你實例化你的數據庫連接時,你可以提供正確的連接字符串,然後你就可以設置。

編輯:聊天解決方案之後一直放兩個的ConnectionStrings在web.config,一個用於測試數據庫和一個生產。然後添加路由假裝兩個文件夾仍然存在,具有以下基本思路:

routes.Add(new Route("{folder}/{page}", new PageRouteHandler("~/{page}"))); 

最後決定哪些ConnectionString的基於路由值folder值使用功能:Request.RequestContext.RouteData.Values["folder"],以及全球重構使用這個動態連接字符串而不是硬編碼的連接字符串。


對於有「多」 web.configs,你可以做一個配置部分具體文件路徑,看到http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.71%29.aspx但我不知道這wheter工程的ConnectionStrings。

例子:

<configuration> 
    <location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

謝謝,但是需要連接來自web.config – user1166905

+0

你不能指定多個連接字符串路徑,不。它必須生活在應用程序本身,它不能在文件系統中消極。 – jcolebrand

+0

如果連接字符串必須來自web.config,這不一定是個問題。您可以手動從web.config讀取連接字符串,並將它們明確地提供給數據庫連接。添加兩個連接字符串,例如'ConnectionLive'和'ConnectionTest',並使用[ConfigurationManager.ConnectionStrings](http://msdn.microsoft.com/zh-cn/library/system.configuration.configurationmanager.connectionstrings.aspx)訪問它們。 –

相關問題