1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
//------------------------------------------------------------------------------
// <copyright file="SqlCacheDependencySection.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Security.Permissions;
/* <!-- sqlCacheDependency Attributes:
enabled="[true|false]" - Enable or disable SQL cache dependency polling
pollTime="poll time in milliseconds. Minimum is 500 ms."
Child nodes:
<databases> Database entries
<add Add a database entry
name="string" Name to identify this database entry
connectionStringName="string" Connection string name to the SQL database
pollTime="int" (optional) Poll time in milliseconds
<remove Remove a database entry
name="string" /> Name of database entry to remove
<clear/> Remove all database entries
</databases>
Example:
<databases>
<add name="Northwind_Local" connectionStringName="LocalNorthwind" />
<remove name="Pubs_Local">
<databases>
-->
<sqlCacheDependency enabled="true" pollTime="60000">
<databases>
</databases>
</sqlCacheDependency>
*/
public sealed class SqlCacheDependencySection : ConfigurationSection {
private static readonly ConfigurationElementProperty s_elemProperty =
new ConfigurationElementProperty(new CallbackValidator(typeof(SqlCacheDependencySection), Validate));
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propEnabled;
private static readonly ConfigurationProperty _propPollTime;
private static readonly ConfigurationProperty _propDatabases;
static SqlCacheDependencySection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_propEnabled = new ConfigurationProperty("enabled",
typeof(bool),
true,
ConfigurationPropertyOptions.None);
_propPollTime = new ConfigurationProperty("pollTime",
typeof(int),
60000,
ConfigurationPropertyOptions.None);
_propDatabases = new ConfigurationProperty("databases",
typeof(SqlCacheDependencyDatabaseCollection),
null,
ConfigurationPropertyOptions.IsDefaultCollection);
_properties.Add(_propEnabled);
_properties.Add(_propPollTime);
_properties.Add(_propDatabases);
}
public SqlCacheDependencySection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
protected override ConfigurationElementProperty ElementProperty {
get {
return s_elemProperty;
}
}
private static void Validate(object value) {
if (value == null) {
throw new ArgumentNullException("sqlCacheDependency");
}
Debug.Assert(value is SqlCacheDependencySection);
SqlCacheDependencySection elem = (SqlCacheDependencySection)value;
int defaultPollTime = elem.PollTime;
if (defaultPollTime != 0 && defaultPollTime < 500) {
throw new ConfigurationErrorsException(
SR.GetString(SR.Invalid_sql_cache_dep_polltime),
elem.ElementInformation.Properties["pollTime"].Source,
elem.ElementInformation.Properties["pollTime"].LineNumber);
}
}
protected override void PostDeserialize() {
int defaultPollTime = PollTime;
foreach (SqlCacheDependencyDatabase dbase in Databases) {
dbase.CheckDefaultPollTime(defaultPollTime);
}
}
[ConfigurationProperty("enabled", DefaultValue = true)]
public bool Enabled {
get {
return (bool)base[_propEnabled];
}
set {
base[_propEnabled] = value;
}
}
[ConfigurationProperty("pollTime", DefaultValue = 60000)]
public int PollTime {
get {
return (int)base[_propPollTime];
}
set {
base[_propPollTime] = value;
}
}
[ConfigurationProperty("databases")]
public SqlCacheDependencyDatabaseCollection Databases {
get {
return (SqlCacheDependencyDatabaseCollection)base[_propDatabases];
}
}
}
}
|