Đọc các phần cấu hình từ ứng dụng hiện tại

Một phần của tài liệu Giáo trình ASP.NET cơ bản doc (Trang 176 - 179)

Khi một ứng dụng ASP.NET khởi động, ưng dụng gộp tất cả các thiết lập cấu hình trong phân lớp cấu hình để tạo sự biểu diễn của các thiết lập cấu hình. Một thiết lập cấu hình riêng có thể có các giá trị riêng ở các tầng khác nhau trong phân cấp. Bạn có thể sử dụng các phương thức của lớp WebConfigurationManager để lấy giá trị của một thiết lập cấu hình ở một vài tầng trong hệ phân cấp.

Phương thức WebConfigurationManager.GetWebApplicationSection() luôn lấy một thiết lập cấu hình từ file Web.config. Ví dụ sau sẽ hiển thị có cho phép debugging có được hiển thị không.

<%@ PageLanguage="C#" AutoEventWireup="true"CodeFile="ShowConfigApp.aspx.cs"

Inherits="ShowConfigApp" %>

<%@ ImportNamespace="System.Web.Configuration" %>

<script runat="server">

void Page_Load(object sender, EventArgs e) {

CompilationSection section =

(CompilationSection)WebConfigurationManager.GetWebApplicationSection("system.web/co mpilation");

lblDebug.Text = section.Debug.ToString(); }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>Show Config App</title> </head>

<body>

<formid="form1"runat="server">

<div>

Debug Mode: <asp:Labelid="lblDebug"Runat="server"/>

</div>

</form> </body> </html>

Kết xuất của chương trình

Phương thức GetWebApplication() trả về một đối tượng. Bạn phải chuyển kiểu giá trị trả về bởi phương thức này tới một kiểu của phần cấu hình riêng. Trong ví dụ trên giá trị trả về được chuyển kiểu về CompilationSection.

Nếu bạn muốn lấy giá trị của một thiết đặt cấu hình quan hệ với một thư mục trong trường hợp trang này thực thi, thì bạn có thể sử dụng phương thức GetSection() thay vì sử dụng phương thức GetWebApplicationSection().

Như ví dụ sau:

<%@Page Language="C#"AutoEventWireup="true"

CodeFile="ShowConfigRelative.aspx.cs" Inherits="subfolder_ShowConfigRelative" %> <%@ImportNamespace="System.Web.Configuration" %>

<scriptrunat="server">

void Page_Load(object sender, EventArgs e) {

CompilationSection section =

(CompilationSection)WebConfigurationManager.GetSection("system.web/compilation"); lblDebug1.Text = section.Debug.ToString();

section =

(CompilationSection)WebConfigurationManager.GetWebApplicationSection("system.web/co mpilation");

lblDebug2.Text = section.Debug.ToString(); }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>Show Config Relative</title> </head>

<body>

<formid="form1"runat="server">

<div>

GetSection Debug:

<asp:Labelid="lblDebug1"Runat="server"/>

<br/><br />

GetWebApplicationSection Debug:

<asp:Labelid="lblDebug2"Runat="server"/>

</div>

</form> </body> </html>

Trong ví dụ trên ta sử dụng hai phương thức GetSection() và GetWebApplicationSection(), Phương thức đầu tiên sẽ hiển thị thông tin thiết lập cấu hình quan hệ với thư mục hiện tại và phương thức thứ 2 hiển thị thông tin thiết lập cấu hình từ file web.config trong thư mục gốc. Nếu bạn muốn lấy giá trị của một thiết lập cấu hình cho một đường dẫn riêng bạn có thể quá tải phương thức GetSection() mà chấp nhận một tham số đường dẫn.

Ví dụ:

<%@ PageLanguage="C#"%>

<%@ ImportNamespace="System.IO" %>

<%@ ImportNamespace="System.Web.Configuration" %> <%@ ImportNamespace="System.Collections.Generic" %>

<script runat="server">

void Page_Load(object sender, EventArgs e) {

Dictionary<string, bool> results = new Dictionary<string, bool>();

DirectoryInfo rootDir = new DirectoryInfo(Request.PhysicalApplicationPath); DirectoryInfo[] dirs = rootDir.GetDirectories();

foreach (DirectoryInfo dir in dirs) {

string path = "~/" + dir.Name; CompilationSection section =

(CompilationSection)WebConfigurationManager.GetSection("system.web/compilation", path); results.Add(path, section.Debug); } grdResults.DataSource = results; grdResults.DataBind(); } </script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>Show Config Path</title> </head>

<body>

<formid="form1"runat="server">

<div>

<asp:GridViewid="grdResults"AutoGenerateColumns="false"Runat="server">

<Columns>

<asp:BoundFieldDataField="Key"HeaderText="Path"/>

<asp:BoundFieldDataField="Value"HeaderText="Debug Mode"/>

</asp:GridView>

</div>

</form> </body> </html>

Kết xuất của chương trình

Trong ví dụ trên đưa ra tất cả các thư mục con chứa đựng trong ứng dụng hiện tại và hiển thị debugging có cho phép hay không.

Một phần của tài liệu Giáo trình ASP.NET cơ bản doc (Trang 176 - 179)

Tải bản đầy đủ (PDF)

(183 trang)