2014-10-03 46 views
2

我一直在互聯網上漫遊,找出最佳解決方案是什麼,但我似乎找不到滿意的答案。在發佈模式中,您的web.config中的programmactly更改

我的問題是,我希望我的網站管理員能夠更改服務器設置(電子郵件,密碼和Exchange服務器端點URL) - 這應該可以在瀏覽器中執行,所以管理員不會必須打開web.config文件。 設置很少設置,但它的可能性存在。

我現在做的是,一旦管理員填寫自己的狀態,我的控制器將設置新的值在web.config的AppSettings:

<appSettings> 
     <add key="ewsUser" value="[email protected]" /> 
     <add key="ewsPW" value="somePW" /> 
     <add key="ewsUrl" value="https://outlook.ews.com/xxx.asmx" /> 
    </appSettings> 

這是我的大問題開始的地方,因爲我所有的研究都在互聯網上進行。 假設我的應用程序現在在線,並且正在被數百人全天候使用,那麼這個解決方案會成爲一個問題嗎? 我讀過,如果你改變你的web.config文件,它會讓你的應用程序在服務器上重新啓動,而不會丟掉任何客戶端。但是,這會影響客戶在那一刻正確的會話嗎?服務器會忘記他們的會話嗎?

我讀過一些壞習慣,this article說明了如何通過在web.config AppSettings中創建一個新的.config文件並鏈接到該配置文件來解決這個問題。但這真的有必要嗎?我發現它比我現在的解決方案更混亂。

任何想法,想法和/或事實都將被評價。

回答

0

寫入web.config確實是一個不好的做法。更改web.config文件時,應用程序將重新啓動。雖然不確定會議,但他們可能會重置。那麼你部署新版本的應用程序並意外覆蓋web.config的情況如何? 兩種解決方案可能會有所幫助:

  • 在數據庫中創建一個簡單的鍵/值表
  • 創建自定義的XML格式和讀/寫一個文件(並命名例如mysettings.config文件,而不是mysettings.xml以防止直接從網絡瀏覽器訪問)

要加快速度,可以在讀取後將這些值緩存在內存中。

+0

謝謝你的回答Marthijn--你的兩個解決方案也在我的「選擇桶」中。現在是一個後續問題。上述哪一種解決方案最難入侵?請記住,數據庫中的數據將被加密和醃製(密碼至少)。 – Adam 2014-10-06 09:32:06

+1

取決於,如果您已經有數據庫運行它可能是最簡單的。 XML也不是那麼難,只是使用序列化,.NET將處理它。我也應該在XML文件中加密密碼。 – Marthijn 2014-10-06 14:24:31