Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / SiteMap.cs / 1305376 / SiteMap.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Copyright (c) 2002 Microsoft Corporation */ namespace System.Web { using System; using System.Collections; using System.ComponentModel; using System.Configuration.Provider; using System.Security.Permissions; using System.Web.Configuration; using System.Web.UI; using System.Web.Hosting; public static class SiteMap { internal const string SectionName = "system.web/siteMap"; private static SiteMapProviderCollection _providers; private static SiteMapProvider _provider; private static object _lockObject = new object(); private static bool _configEnabledEvaluated; private static bool _enabled; public static SiteMapNode CurrentNode { get { return Provider.CurrentNode; } } public static bool Enabled { get { if (!_configEnabledEvaluated) { SiteMapSection config = RuntimeConfig.GetAppConfig().SiteMap; _enabled = (config != null && config.Enabled); _configEnabledEvaluated = true; } return _enabled; } } public static SiteMapProvider Provider { get { Initialize(); return _provider; } } public static SiteMapProviderCollection Providers { get { Initialize(); return _providers; } } public static SiteMapNode RootNode { get { SiteMapProvider rootProvider = Provider.RootProvider; SiteMapNode rootNode = rootProvider.RootNode; if (rootNode == null) { String name = ((ProviderBase)rootProvider).Name; throw new InvalidOperationException(SR.GetString(SR.SiteMapProvider_Invalid_RootNode, name)); } return rootNode; } } public static event SiteMapResolveEventHandler SiteMapResolve { add { Provider.SiteMapResolve += value; } remove { Provider.SiteMapResolve -= value; } } private static void Initialize() { if (_providers != null) return; HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level); lock (_lockObject) { if (_providers != null) return; SiteMapSection config = RuntimeConfig.GetAppConfig().SiteMap; if (config == null) { // just return an empty collection so that designer will work. _providers = new SiteMapProviderCollection(); return; } if (!config.Enabled) throw new InvalidOperationException(SR.GetString(SR.SiteMap_feature_disabled, SiteMap.SectionName)); // Make sure the default provider exists. config.ValidateDefaultProvider(); _providers = config.ProvidersInternal; _provider = _providers[config.DefaultProvider]; _providers.SetReadOnly(); } } } public sealed class SiteMapProviderCollection : ProviderCollection { public override void Add(ProviderBase provider) { if (provider == null) throw new ArgumentNullException("provider"); if (!(provider is SiteMapProvider)) throw new ArgumentException(SR.GetString( SR.Provider_must_implement_the_interface, provider.GetType().Name, typeof(SiteMapProvider).Name), "provider"); Add((SiteMapProvider)provider); } public void Add(SiteMapProvider provider) { if (provider == null) { throw new ArgumentNullException("provider"); } base.Add(provider); } public void AddArray(SiteMapProvider [] providerArray) { if (providerArray == null) { throw new ArgumentNullException("providerArray"); } foreach (SiteMapProvider provider in providerArray) { if (this[provider.Name] != null) throw new ArgumentException(SR.GetString(SR.SiteMapProvider_Multiple_Providers_With_Identical_Name, provider.Name)); Add(provider); } } public new SiteMapProvider this[string name] { get { return (SiteMapProvider) base[name]; } } } public delegate SiteMapNode SiteMapResolveEventHandler(Object sender, SiteMapResolveEventArgs e); public class SiteMapResolveEventArgs : EventArgs { private HttpContext _context; private SiteMapProvider _provider; public SiteMapResolveEventArgs(HttpContext context, SiteMapProvider provider) { _context = context; _provider = provider; } public SiteMapProvider Provider { get { return _provider; } } public HttpContext Context { get { return _context; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Copyright (c) 2002 Microsoft Corporation */ namespace System.Web { using System; using System.Collections; using System.ComponentModel; using System.Configuration.Provider; using System.Security.Permissions; using System.Web.Configuration; using System.Web.UI; using System.Web.Hosting; public static class SiteMap { internal const string SectionName = "system.web/siteMap"; private static SiteMapProviderCollection _providers; private static SiteMapProvider _provider; private static object _lockObject = new object(); private static bool _configEnabledEvaluated; private static bool _enabled; public static SiteMapNode CurrentNode { get { return Provider.CurrentNode; } } public static bool Enabled { get { if (!_configEnabledEvaluated) { SiteMapSection config = RuntimeConfig.GetAppConfig().SiteMap; _enabled = (config != null && config.Enabled); _configEnabledEvaluated = true; } return _enabled; } } public static SiteMapProvider Provider { get { Initialize(); return _provider; } } public static SiteMapProviderCollection Providers { get { Initialize(); return _providers; } } public static SiteMapNode RootNode { get { SiteMapProvider rootProvider = Provider.RootProvider; SiteMapNode rootNode = rootProvider.RootNode; if (rootNode == null) { String name = ((ProviderBase)rootProvider).Name; throw new InvalidOperationException(SR.GetString(SR.SiteMapProvider_Invalid_RootNode, name)); } return rootNode; } } public static event SiteMapResolveEventHandler SiteMapResolve { add { Provider.SiteMapResolve += value; } remove { Provider.SiteMapResolve -= value; } } private static void Initialize() { if (_providers != null) return; HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level); lock (_lockObject) { if (_providers != null) return; SiteMapSection config = RuntimeConfig.GetAppConfig().SiteMap; if (config == null) { // just return an empty collection so that designer will work. _providers = new SiteMapProviderCollection(); return; } if (!config.Enabled) throw new InvalidOperationException(SR.GetString(SR.SiteMap_feature_disabled, SiteMap.SectionName)); // Make sure the default provider exists. config.ValidateDefaultProvider(); _providers = config.ProvidersInternal; _provider = _providers[config.DefaultProvider]; _providers.SetReadOnly(); } } } public sealed class SiteMapProviderCollection : ProviderCollection { public override void Add(ProviderBase provider) { if (provider == null) throw new ArgumentNullException("provider"); if (!(provider is SiteMapProvider)) throw new ArgumentException(SR.GetString( SR.Provider_must_implement_the_interface, provider.GetType().Name, typeof(SiteMapProvider).Name), "provider"); Add((SiteMapProvider)provider); } public void Add(SiteMapProvider provider) { if (provider == null) { throw new ArgumentNullException("provider"); } base.Add(provider); } public void AddArray(SiteMapProvider [] providerArray) { if (providerArray == null) { throw new ArgumentNullException("providerArray"); } foreach (SiteMapProvider provider in providerArray) { if (this[provider.Name] != null) throw new ArgumentException(SR.GetString(SR.SiteMapProvider_Multiple_Providers_With_Identical_Name, provider.Name)); Add(provider); } } public new SiteMapProvider this[string name] { get { return (SiteMapProvider) base[name]; } } } public delegate SiteMapNode SiteMapResolveEventHandler(Object sender, SiteMapResolveEventArgs e); public class SiteMapResolveEventArgs : EventArgs { private HttpContext _context; private SiteMapProvider _provider; public SiteMapResolveEventArgs(HttpContext context, SiteMapProvider provider) { _context = context; _provider = provider; } public SiteMapProvider Provider { get { return _provider; } } public HttpContext Context { get { return _context; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConstNode.cs
- LabelLiteral.cs
- ConnectionsZone.cs
- SourceFileInfo.cs
- QilVisitor.cs
- PropertyReferenceExtension.cs
- DataPagerFieldCollection.cs
- XamlTreeBuilderBamlRecordWriter.cs
- ConnectionProviderAttribute.cs
- EllipseGeometry.cs
- GeometryHitTestParameters.cs
- AuthStoreRoleProvider.cs
- BindingOperations.cs
- KnownBoxes.cs
- UrlMappingsSection.cs
- VectorCollectionConverter.cs
- VisualTreeUtils.cs
- AnimationException.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- SatelliteContractVersionAttribute.cs
- SendKeys.cs
- ConstrainedDataObject.cs
- X509CertificateChain.cs
- FontStretch.cs
- AxHost.cs
- Single.cs
- CodeTypeReference.cs
- ValueConversionAttribute.cs
- Win32KeyboardDevice.cs
- ResourceDefaultValueAttribute.cs
- MulticastNotSupportedException.cs
- Html32TextWriter.cs
- PropertyGridCommands.cs
- CrossAppDomainChannel.cs
- DeflateStream.cs
- columnmapkeybuilder.cs
- URI.cs
- DecimalAnimationUsingKeyFrames.cs
- ScriptIgnoreAttribute.cs
- XmlSchemaAppInfo.cs
- Matrix3DConverter.cs
- WorkflowQueuingService.cs
- CodeObject.cs
- relpropertyhelper.cs
- CompoundFileDeflateTransform.cs
- CustomExpression.cs
- EmptyReadOnlyDictionaryInternal.cs
- ButtonBaseAutomationPeer.cs
- SBCSCodePageEncoding.cs
- DynamicDiscoSearcher.cs
- dtdvalidator.cs
- TlsnegoTokenProvider.cs
- ArglessEventHandlerProxy.cs
- DataGridPageChangedEventArgs.cs
- DataGridViewCellLinkedList.cs
- DataGridColumnHeaderCollection.cs
- AgileSafeNativeMemoryHandle.cs
- GenericWebPart.cs
- QueryStringParameter.cs
- WMIGenerator.cs
- DbConnectionFactory.cs
- Matrix.cs
- ProxyOperationRuntime.cs
- SessionStateUtil.cs
- DockingAttribute.cs
- XmlCompatibilityReader.cs
- TimeoutException.cs
- RequestStatusBarUpdateEventArgs.cs
- AttributeConverter.cs
- EnumBuilder.cs
- Mutex.cs
- GenericTypeParameterBuilder.cs
- ProviderException.cs
- ResXBuildProvider.cs
- RC2CryptoServiceProvider.cs
- PerfCounterSection.cs
- TableLayoutColumnStyleCollection.cs
- CatalogPart.cs
- sqlpipe.cs
- OperatorExpressions.cs
- BuilderPropertyEntry.cs
- PaintValueEventArgs.cs
- XmlSchemaType.cs
- CodeDomComponentSerializationService.cs
- SQLBinaryStorage.cs
- GeometryHitTestParameters.cs
- AnimationClockResource.cs
- TaiwanCalendar.cs
- GridItemProviderWrapper.cs
- DateTimeConstantAttribute.cs
- MailDefinition.cs
- QilFunction.cs
- WebHostScriptMappingsInstallComponent.cs
- KeyedCollection.cs
- ZipIOCentralDirectoryBlock.cs
- SecurityChannelFaultConverter.cs
- BookmarkNameHelper.cs
- SimpleModelProvider.cs
- Vector3D.cs
- MessagingDescriptionAttribute.cs