ASP.NET 設定檔縱橫談(三)

來源:互聯網
上載者:User

      本篇來講講對web.config檔案的讀寫,並不是誰都可以對web.config檔案進行讀寫操作的,必須要有一定的許可權才行的。
      其實在web.config中的很多的配置節點都是與一個類相對應的,我們可以通過相應的類來,利用其強型別的API來對相應的配置進行訪問,而不用把web.config 當做一個XML來讀取。
      我們可以用兩種方式來對設定檔進行訪問,首先,可以用強型別的API來訪問,這就要用要ConfigurationManager類。如下:

using System.Web.Configuration;
using System.Configuration;
 
protected void Page_Load(object sender, EventArgs e)
{
    SessionStateSection sts =(SessionStateSection)ConfigurationManager.GetSection("system.web/sessionState");
    Response.Write("The session state mode is: " + sts.Mode.ToString() + "<br/>");
}

 

 

      大家應該可以看到,其實我們現在就是對sessionState節點進行訪問。
      在ConfigurationManager中有一個靜態方法GetSection,傳入我們要訪問節點的XPath,如上面的system.web/sessionState,然後把結果轉換為對應的強型別,我們就可以訪問節點的屬性等資訊。在System.Web.Configuration空間中,我們可以找到對應節點的強型別。

      有一點要注意的就是:ConfigurationManager僅僅只能處理當前網站中的web.config,也就是說它不能處理別的網站的中的設定檔。如我們現在的網站是DemoA,那麼上面的執行個體代碼訪問的就是DemoA中的web.config,不能訪問DemoB中的web.config。

      但是我們還可以用第二種方法來做,就是用WebConfigurationManager。代碼如下:

 

using System.Web.Configuration;
using System.Configuration;
 
protected void Page_Load(object sender, EventArgs e)
{
     MembershipSection ms = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership", "~/web.config");
     Response.Write("The default provider as set in config is: " +
     ms.DefaultProvider + "<br/>");}
}

 

 

     上面的代碼中,注意GetSection的第二個參數就申明了web.config的路徑,上面的代碼訪問的是當前網站中的設定檔,我們還訪問其他網站中的設定檔。

      上面講述了怎麼來讀取一個設定檔,下面就來看看怎麼對設定檔進行寫的操作。
      當對設定檔進行寫的操作的時候,就要求我們確確實實的開啟設定檔,而不僅僅只是返回一個設定檔的引用。也就是說,我們不能用ConfigurationManager來進行寫的操作,因為它只是返回一個System.Configuration.Configuration的引用。所以我們應該用WebConfigurationManager來對設定檔進行寫的操作。
      當我們用編程的方式開啟設定檔,設定了一些屬性後,就可以用Configuration.Save()來儲存修改。如:

 

using System.Web.Configuration;
 
protected void Page_Load(object sender, EventArgs e)
{
     Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
     MembershipSection ms =(MembershipSection)config.GetSection("system.web/membership");
     ms.DefaultProvider = "someOtherProvider";
     config.Save();
}

 

       注意:OpenWebConfiguration方法有很多的重載,"~"表示我們開啟的是當前網站的設定檔。還有一點很中的就是,設定檔系統沒有對多線程進行同步和鎖。所以載我們寫一個設定檔的時候最好注意這點。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.