2017-05-30 189 views
0

我有一個應用程序中類似的連接字符串, 應用程序設定等出現在我的web.config文件中的所有配置。在生產環境中,當我改變一些設置。我必須重新啓動應用程序。我在某處讀到,如果我們添加外部配置文件並在web.config中添加它的引用,那麼我們不需要重新啓動應用程序。這裏是我的web.config:如何在Asp.net MVC中配置外部配置文件?

<appSettings configSource="appSettingConfig.xml" /> 

這裏是我的外部配置文件:

<appSettings> 
    <add key="IsShowReportEnabled" value ="True"/> 
    <add key="SendReportToPrinter" value ="False"/> 
    </appSettings> 

外部配置文件工作正常,但問題仍然存在同樣的,如果我在外部文件改變我重新啓動應用程序。 然後,我GOOGLE了一下,發現添加部分來配置重新啓動外部文件或不。這是它在web.config中:

<section name='rewrite' type='???' restartOnExternalChanges='false' /> 

但這也沒有幫助。誰能告訴我我做錯了什麼?

+0

你讀過https://msdn.microsoft.com/en-us/library/ms228245%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396?特別是:restartOnExternalChanges - 不適用於ASP.NET應用程序。 – Webbanditten

+0

只是讀它是restartOnExternalChanges不會在asp.net應用程序 – Umer

+0

申請是否有任何其他方式做到這一點? – Umer

回答

0

任何一個可以告訴我什麼,我做錯了什麼?

Web.config設置旨在成爲在應用程序啓動時加載的應用程序範圍的設置。通常,這些設置是手動更改的,或者是部署過程的更改,因此應用程序在更改時會重新啓動是一個可接受的副作用。並不意味着

運行系統設置存儲在Web.config文件。它們通常存儲在另一個持久位置,如文本文件或更常見的數據庫中。

你設置的名字(尤其是SendReportToPrinter)聽起來像他們是用戶特定的設置,而不是應用程序範圍的設置。我希望這些可以存儲在數據庫中用戶特定的表中,因爲它們可能需要爲每個用戶都不同。

+0

我同意你的意見但對於客戶要求我必須這樣做。如果沒有應用程序啓動,有什麼方法可以更改嗎 – Umer

+0

否。更改web.config始終重新啓動應用程序,因爲設置被緩存在應用程序中。但我重新閱讀你的問題,聽起來你正在構建一個多租戶應用程序。看看[這個答案](https://stackoverflow.com/a/32661858)和[如何使用ASP.NET MVC設計多租戶應用程序](https://www.appseconnect.com/how-設計一個多租戶應用程序與asp-net-mvc /)的幾種方法如何做到這一點。 – NightOwl888