歡迎光臨 pure C# 技術社群. 登入註冊

pure C# 技術社群

- Microsoft .NET Framework 相關技術非官方討論社群 -

程式控制存取 Web.config 應用程式設定檔

  • 1
  • [第1/1頁 共5項]
#1

程式控制存取 Web.config 應用程式設定檔

  • a
 0.0 (0 人評價)
在一般的 Web-base 應用系統中我們總是會用 Web.config 來設定各種環境配置,尤其是在 <appSettings> 區段中可以允許自由的加入自定的 key/value 成對參數,在以往.net 1.0 或是 .net 1.1 之下可以很簡的讀取自定參教,然而如果要在程式中以程式控制來寫入 Web.config 卻不太容易,幸運的是在 .net 2.0 中以已增加了若干種物件來支援這些功能,其中 System.Web.Configuration.WebConfigurationManager 物件就俱有操作 Web.config 檔案的能力。

假設在我們範例中的 Web.config 設定如下:



讀取設定
單純的讀取設定非常的簡單,僅僅只需要一行程式碼

這樣我們便可以讀取到 "This is MyWeb" 字串,然後將它運用在程式中任何需要使用的地方。


修改設定
修改設定的步驟稍微多了一點,但是依然非常的簡單

當程式執行到 config.Save(); 的時後就會將所有更變存儲回 Web.config 裏。


真實的應用
現在要討論的是程式中俱備有存取 Web.config 能力可以用來做些什麼..... 嗯.... 也許在一些小型的系統中可以用來直接當做系統參數的存放檔,那麼我們就不再需要另外的 .ini 檔或是 xml 設定檔了不是嗎?
如果寫一個專門控制的 SysConfig 物件然後存放到 Application 變數裏更能突顯它的好處


現在我們有了自定的 SystemConfiguration 物件,剩下的只需要把它加到 Application 中隨時取用。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息


贊助商連結

#2

Re: 程式控制存取 Web.config 應用程式設定檔

  • a
 0.0 (0 人評價)

您好,小弟使用了這篇文章的讀寫web.config的語法
但是在寫入時在config.Save(); 這一行發生錯誤
可以請問怎麼解決嗎 感謝您 ^^

附上錯誤訊息:

Message="無法將組態儲存到檔案 'D:\\2005WebSite\\SCM\\Manager\\web.config'。"
  Source="System.Configuration"
  BareMessage="無法將組態儲存到檔案 'D:\\2005WebSite\\SCM\\Manager\\web.config'。"
  Line=0
  StackTrace:
       於 System.Configuration.Internal.WriteFileContext.ReplaceFile(String Source, String Target)
       於 System.Configuration.Internal.WriteFileContext.Complete(String filename, Boolean success)
       於 System.Configuration.Internal.InternalConfigHost.StaticWriteCompleted(String streamName, Boolean success, Object writeContext, Boolean assertPermissions)
       於 System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext, Boolean assertPermissions)
       於 System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)
       於 System.Configuration.Internal.DelegatingConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)
       於 System.Configuration.UpdateConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)
       於 System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, ConfigurationSaveMode saveMode, Boolean forceUpdateAll)
       於 System.Configuration.Configuration.SaveAsImpl(String filename, ConfigurationSaveMode saveMode, Boolean forceSaveAll)
       於 System.Configuration.Configuration.Save()
       於 SetArgument.Check_Click(Object sender, EventArgs e) 於 d:\2005WebSite\SCM\Manager\SetArgument.aspx.cs: 行 42
       於 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       於 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       於 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       於 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       於 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       於 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#3

Re: 程式控制存取 Web.config 應用程式設定檔

  • a
 0.0 (0 人評價)
有很多原因會造成寫入錯誤,也許是因為權限不足或是其它不幸的巧合。
總之你可以試著先把web.config檔的權限設定為everyone也可寫入及讀取。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#4

Re: 程式控制存取 Web.config 應用程式設定檔

  • a
 0.0 (0 人評價)
您真內行,真的是權限的問題,不過再這個錯誤發生前,錯誤訊息是權限不足。
有試著改過權限,現在又再開大一點,不過這樣會不會導致安全性的問題呢?
我同事說這樣不安全,叫我改成存取資料庫

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#5

Re: 程式控制存取 Web.config 應用程式設定檔

  • a
 0.0 (0 人評價)
方便與安全往往都是互相衝突的,重點在於計設者依不同的使用情況去決定一個不會太不安全又不會太麻煩的方式,實際上我的網站也不採用這種方式,原因也在於安全性的顧慮,所以每當我要修改web.config時還是用文字編輯器修改,因為我不覺的直接面對 web.config 中的 XML 很困難,但是如果你開發的系統是要交給End User 使用時,準備一個簡潔的設定畫面肯定會讓大家愛上你。
事實上如果真的有需要的話你可以不要讓everyone可寫入檔案改由ASPNET帳號可寫入檔案。
(在XP作業系統中ASPNET帳號的說明為 Account used for running the ASP.NET worker process (aspnet_wp.exe))

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息
  • 1
  • [第1/1頁 共5項]