ASP.NET Tutorial/Configuration/WebConfigurationManager
Содержание
Get and set application settings
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Welcome_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:Label id="lblSiteName" runat="server" Font-Bold="True" Font-Size="Large"></asp:Label> <asp:Label id="lblWelcome" runat="server" Font-Names="Tahoma"></asp:Label>
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.Configuration; public partial class Welcome_aspx : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); lblSiteName.Text = config.AppSettings.Settings["websiteName"].Value; lblWelcome.Text = config.AppSettings.Settings["welcomeMessage"].Value; if (config.AppSettings.Settings["welcomeMessage"].Value.Length > 15) { config.AppSettings.Settings["welcomeMessage"].Value = "Welcome, again."; } else { config.AppSettings.Settings["welcomeMessage"].Value = "Welcome, friend."; } config.Save(); }
} File: Web.config <?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
<system.web> <appSettings> <add key="websiteName" value="My New Website" /> <add key="welcomeMessage" value="Welcome, again." /> </appSettings>
</configuration></source>
Opening a Configuration File
<source lang="csharp">
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_Load() { Configuration config = WebConfigurationManager.OpenMachineConfiguration(); AuthenticationSection section = (AuthenticationSection)config.GetSection ("system.web/authentication"); lblMode.Text = section.Mode.ToString(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Config Machine</title>
</head> <body>
<form id="form1" runat="server">
Authentication Mode Default Value: <asp:Label id="lblMode" Runat="server" />
</form>
</body> </html></source>
Read configuration
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ReadWriteConfiguration_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.Configuration; public partial class ReadWriteConfiguration_aspx : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { foreach (ConnectionStringSettings connection in WebConfigurationManager.ConnectionStrings) { Response.Write("Name: " + connection.Name + "
"); Response.Write("Connection String: " + connection.ConnectionString + "
"); } Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); CompilationSection compSection = (CompilationSection)config.GetSection(@"system.web/compilation"); foreach (AssemblyInfo assm in compSection.Assemblies) { Response.Write(assm.Assembly + "<br /"); } }
}
File: Web.config <?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
<system.web>
<compilation debug="true"> <assemblies> <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies> </compilation> <authentication mode="Windows"/> </system.web>
</configuration></source>
Retrieving a configuration setting with the GetSection() and GetWebApplicationSection() methods.
<source lang="csharp">
File: SubFolder\ShowConfigRelative.aspx <%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_Load() { CompilationSection section = (CompilationSection)WebConfigurationManager.GetSection("system.web/compilation"); lblDebug1.Text = section.Debug.ToString(); section = (CompilationSection)WebConfigurationManager.GetWebApplicationSection("system.web/compilation"); lblDebug2.Text = section.Debug.ToString(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Config Relative</title>
</head> <body>
<form id="form1" runat="server">
GetSection Debug: <asp:Label id="lblDebug1" Runat="server" />
GetWebApplicationSection Debug: <asp:Label id="lblDebug2" Runat="server" />
</form>
</body> </html></source>
Update Configuration
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="UpdateConfig" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Update Configuration</title>
</head> <body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Stop access to .XYZ Resources" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Re-enable access to .XYZ Resources" OnClick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Encrypt connectionStrings" OnClick="Button3_Click" />
<asp:Button ID="Button5" runat="server" Text="Read Connection String" OnClick="Button5_Click" />
<asp:Button ID="Button4" runat="server" Text="Decrypt connectionStrings" OnClick="Button4_Click" />
</form>
</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Configuration;
public partial class UpdateConfig : System.Web.UI.Page {
protected void Button1_Click(object sender, EventArgs e) { string name = @"system.web/httpHandlers"; string path = "/"; Configuration appConfig = WebConfigurationManager.OpenWebConfiguration(path); HttpHandlersSection section = (HttpHandlersSection)appConfig.GetSection(name);
HttpHandlerAction newHandler = new HttpHandlerAction( "*.xyz", "System.Web.HttpForbiddenHandler", "*"); section.Handlers.Add(newHandler); appConfig.Save(); } protected void Button2_Click(object sender, EventArgs e) { string name = @"system.web/httpHandlers"; string path = "/"; Configuration appConfig = WebConfigurationManager.OpenWebConfiguration(path); HttpHandlersSection section = (HttpHandlersSection)appConfig.GetSection(name); section.Handlers.Remove("*", "*.xyz"); appConfig.Save(); } protected void Button3_Click(object sender, EventArgs e) { string name = "connectionStrings"; string path = "/"; Configuration cfg = WebConfigurationManager.OpenWebConfiguration(path); ConnectionStringsSection section; section = (ConnectionStringsSection) cfg.GetSection(name); section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); cfg.Save(); } protected void Button4_Click(object sender, EventArgs e) { string name = "connectionStrings"; string path = "/"; Configuration cfg = WebConfigurationManager.OpenWebConfiguration(path); ConnectionStringsSection section; section = (ConnectionStringsSection)cfg.GetSection(name); section.SectionInformation.UnprotectSection(); cfg.Save(); } protected void Button5_Click(object sender, EventArgs e) { Response.Write(WebConfigurationManager.ConnectionStrings["LocalNWind"].ConnectionString); }
}</source>
Using the Configuration API
<source lang="csharp">
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_Load() { CompilationSection section = (CompilationSection)WebConfigurationManager.GetWebApplicationSection("system.web/compilation"); lblDebug.Text = section.Debug.ToString(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Config App</title>
</head> <body>
<form id="form1" runat="server">
Debug Mode: <asp:Label id="lblDebug" Runat="server" />
</form>
</body> </html></source>