Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / serverconfig.cs / 1305376 / serverconfig.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System.Configuration;
using System.Collections;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Threading;
using System.Web.Util;
using System.Web.Hosting;
using System.Web.Caching;
using System.Web.Compilation;
using Microsoft.Win32;
//
// Abstracts differences between config retreived from IIS 6 metabase
// and config retreived from new IIS7 configuration system.
//
static internal class ServerConfig {
static int s_iisMajorVersion = 0;
internal static bool UseMetabase {
[RegistryPermissionAttribute(SecurityAction.Assert, Read = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\InetStp")]
get {
if (s_iisMajorVersion == 0) {
int version;
try {
object ver = Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\InetStp", "MajorVersion", 0);
version = (ver != null) ? (int) ver : -1;
}
catch (ArgumentException) {
// Ignore ArgumentException from Registry.GetValue. This may indicate that the key does not exist, i.e. IIS not installed
version = -1; // Key not found
}
Interlocked.CompareExchange(ref s_iisMajorVersion, version, 0);
}
return s_iisMajorVersion <= 6;
}
}
static internal IServerConfig GetInstance() {
// IIS 7 bits on <= IIS 6: use the metabase
if (UseMetabase) {
return MetabaseServerConfig.GetInstance();
}
return ProcessHostServerConfig.GetInstance();
}
//
// Return true in cases where web server configuration should be used
// to resolve paths.
//
static int s_useServerConfig = -1;
static internal bool UseServerConfig {
get {
if (s_useServerConfig == -1) {
int useServerConfig = 0;
// Must use web server config if there is no hosting environment
if (!HostingEnvironment.IsHosted) {
useServerConfig = 1;
}
// Hosting environment is the web server
else if (HostingEnvironment.ApplicationHostInternal is ISAPIApplicationHost) {
useServerConfig = 1;
}
// Hosting environment is the web server
else if (HostingEnvironment.IsUnderIISProcess && !BuildManagerHost.InClientBuildManager) {
useServerConfig = 1;
}
Interlocked.CompareExchange(ref s_useServerConfig, useServerConfig, -1);
}
return s_useServerConfig == 1;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System.Configuration;
using System.Collections;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Threading;
using System.Web.Util;
using System.Web.Hosting;
using System.Web.Caching;
using System.Web.Compilation;
using Microsoft.Win32;
//
// Abstracts differences between config retreived from IIS 6 metabase
// and config retreived from new IIS7 configuration system.
//
static internal class ServerConfig {
static int s_iisMajorVersion = 0;
internal static bool UseMetabase {
[RegistryPermissionAttribute(SecurityAction.Assert, Read = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\InetStp")]
get {
if (s_iisMajorVersion == 0) {
int version;
try {
object ver = Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\InetStp", "MajorVersion", 0);
version = (ver != null) ? (int) ver : -1;
}
catch (ArgumentException) {
// Ignore ArgumentException from Registry.GetValue. This may indicate that the key does not exist, i.e. IIS not installed
version = -1; // Key not found
}
Interlocked.CompareExchange(ref s_iisMajorVersion, version, 0);
}
return s_iisMajorVersion <= 6;
}
}
static internal IServerConfig GetInstance() {
// IIS 7 bits on <= IIS 6: use the metabase
if (UseMetabase) {
return MetabaseServerConfig.GetInstance();
}
return ProcessHostServerConfig.GetInstance();
}
//
// Return true in cases where web server configuration should be used
// to resolve paths.
//
static int s_useServerConfig = -1;
static internal bool UseServerConfig {
get {
if (s_useServerConfig == -1) {
int useServerConfig = 0;
// Must use web server config if there is no hosting environment
if (!HostingEnvironment.IsHosted) {
useServerConfig = 1;
}
// Hosting environment is the web server
else if (HostingEnvironment.ApplicationHostInternal is ISAPIApplicationHost) {
useServerConfig = 1;
}
// Hosting environment is the web server
else if (HostingEnvironment.IsUnderIISProcess && !BuildManagerHost.InClientBuildManager) {
useServerConfig = 1;
}
Interlocked.CompareExchange(ref s_useServerConfig, useServerConfig, -1);
}
return s_useServerConfig == 1;
}
}
}
}
// 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
- PersonalizationStateInfo.cs
- FixedLineResult.cs
- Tile.cs
- WebControlParameterProxy.cs
- BuildProviderAppliesToAttribute.cs
- ExpressionVisitor.cs
- SessionParameter.cs
- XPathNode.cs
- Literal.cs
- TextBoxBase.cs
- StylusPointPropertyId.cs
- SchemaImporterExtension.cs
- DateTimeOffsetAdapter.cs
- DataSourceControl.cs
- ItemChangedEventArgs.cs
- GeneralTransform3DTo2D.cs
- HwndHostAutomationPeer.cs
- OdbcParameter.cs
- ObjectViewEntityCollectionData.cs
- DeclarativeExpressionConditionDeclaration.cs
- HtmlMeta.cs
- AppSettingsExpressionBuilder.cs
- ControlBuilder.cs
- HyperLinkColumn.cs
- securitycriticaldataClass.cs
- ArithmeticException.cs
- ServiceDurableInstance.cs
- Event.cs
- SQLResource.cs
- DbReferenceCollection.cs
- TextBoxRenderer.cs
- Token.cs
- Calendar.cs
- SiteMapNodeCollection.cs
- SystemIcmpV4Statistics.cs
- XamlTemplateSerializer.cs
- TraceSwitch.cs
- EntityDataSourceValidationException.cs
- SqlGenerator.cs
- MulticastNotSupportedException.cs
- FrameworkRichTextComposition.cs
- EmptyStringExpandableObjectConverter.cs
- OracleParameter.cs
- HelpInfo.cs
- PerformanceCounter.cs
- InlineUIContainer.cs
- SourceInterpreter.cs
- EndpointBehaviorElement.cs
- ToolStripDesignerAvailabilityAttribute.cs
- RoleManagerModule.cs
- IncrementalCompileAnalyzer.cs
- ArrayTypeMismatchException.cs
- IRCollection.cs
- JsonFormatMapping.cs
- TreeNodeEventArgs.cs
- ListViewEditEventArgs.cs
- ProxySimple.cs
- RawAppCommandInputReport.cs
- XmlDocumentFragment.cs
- TransactionalPackage.cs
- SingleObjectCollection.cs
- login.cs
- ListViewItem.cs
- JournalEntryStack.cs
- EdmError.cs
- RegexNode.cs
- ObjectHandle.cs
- OdbcException.cs
- BindingCompleteEventArgs.cs
- Control.cs
- UpdateDelegates.Generated.cs
- ApplicationProxyInternal.cs
- XmlEntityReference.cs
- VersionedStreamOwner.cs
- FeatureSupport.cs
- DataFormats.cs
- PhysicalOps.cs
- SelectionChangedEventArgs.cs
- StreamReader.cs
- XmlUnspecifiedAttribute.cs
- TransformCollection.cs
- ButtonAutomationPeer.cs
- NumericPagerField.cs
- SortKey.cs
- FixedHighlight.cs
- StreamResourceInfo.cs
- WithParamAction.cs
- SortableBindingList.cs
- StyleSheet.cs
- DrawingState.cs
- MbpInfo.cs
- CDSCollectionETWBCLProvider.cs
- ObjectContextServiceProvider.cs
- SqlFunctionAttribute.cs
- Evaluator.cs
- Odbc32.cs
- BaseTemplateCodeDomTreeGenerator.cs
- StylusDownEventArgs.cs
- ItemsChangedEventArgs.cs
- OpenTypeLayoutCache.cs