Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / Configuration / WasHttpModulesInstallComponent.cs / 1 / WasHttpModulesInstallComponent.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install.Configuration { using WebAdmin = Microsoft.Web.Administration; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Globalization; using System.Text; using System.Web.Configuration; internal class WasHttpModulesInstallComponent : ServiceModelInstallComponent { IIS7ConfigurationLoader configLoader; string displayString; WasHttpModulesInstallComponent(IIS7ConfigurationLoader configLoader) { if (!IisHelper.ShouldInstallWas || !IisHelper.ShouldInstallApplicationHost) { throw new WasNotInstalledException(SR.GetString(SR.WasNotInstalled, SR.GetString(SR.HttpModulesComponentNameWAS))); } else if (!IisHelper.ShouldInstallIis) { throw new IisNotInstalledException(SR.GetString(SR.IisNotInstalled, SR.GetString(SR.HttpModulesComponentNameWAS))); } this.configLoader = configLoader; } internal override string DisplayName { get {return this.displayString; } } protected override string InstallActionMessage { get {return SR.GetString(SR.HttpModulesComponentInstall, ServiceModelInstallStrings.ServiceModel); } } internal override string[] InstalledVersions { get { ListinstalledVersions = new List (); WebAdmin.ConfigurationElement httpModule = this.GetHttpModuleFromCollection(); if(null != httpModule) { string moduleTypeVersion = String.Empty; if (null != httpModule.GetAttribute(ServiceModelInstallStrings.Type)) { moduleTypeVersion = InstallHelper.GetVersionStringFromTypeString( (string)httpModule.GetAttribute(ServiceModelInstallStrings.Type).Value); } string versionString = String.Format(CultureInfo.CurrentCulture, "{0}{1}{2}", (string)httpModule.GetAttribute(ServiceModelInstallStrings.Name).Value, ServiceModelInstallStrings.VersionStringSeparator, moduleTypeVersion); if (!installedVersions.Contains(versionString)) { installedVersions.Add(versionString); } } return installedVersions.ToArray(); } } internal override bool IsInstalled { get { return (null != this.GetHttpModuleFromCollection()); } } protected override string ReinstallActionMessage { get {return SR.GetString(SR.HttpModulesComponentReinstall, ServiceModelInstallStrings.ServiceModel); } } protected override string UninstallActionMessage { get {return SR.GetString(SR.HttpModulesComponentUninstall, ServiceModelInstallStrings.ServiceModel); } } internal static WasHttpModulesInstallComponent CreateNativeWasHttpModulesInstallComponent() { WasHttpModulesInstallComponent wasHttpModulesComponent = new WasHttpModulesInstallComponent(new IIS7ConfigurationLoader(new NativeConfigurationLoader())); wasHttpModulesComponent.displayString = SR.GetString(SR.HttpModulesComponentNameWAS); return wasHttpModulesComponent; } WebAdmin.ConfigurationElement GetHttpModuleFromCollection() { WebAdmin.ConfigurationElement httpModule = null; if (null != this.configLoader.HttpModulesSection) { WebAdmin.ConfigurationElementCollection modulesCollection = this.configLoader.HttpModulesSection.GetCollection(); // ModulesCollection does not have a unique key, thus need to enumerate collection rather than check for key foreach (WebAdmin.ConfigurationElement element in modulesCollection) { if (((string)element.GetAttribute(ServiceModelInstallStrings.Name).Value).Equals(ServiceModelInstallStrings.ServiceModel, StringComparison.OrdinalIgnoreCase)) { httpModule = element; } } } return httpModule; } internal override void Install(OutputLevel outputLevel) { if (!this.IsInstalled) { if (null != this.configLoader.HttpModulesSection) { WebAdmin.ConfigurationElementCollection modulesCollection = this.configLoader.HttpModulesSection.GetCollection(); WebAdmin.ConfigurationElement moduleAction = modulesCollection.CreateElement(); moduleAction.GetAttribute(ServiceModelInstallStrings.Name).Value = ServiceModelInstallStrings.ServiceModel; moduleAction.GetAttribute(ServiceModelInstallStrings.Type).Value = ServiceModelInstallStrings.HttpModulesType; moduleAction.GetAttribute(ServiceModelInstallStrings.PreCondition).Value = ServiceModelInstallStrings.WasHttpModulesPreCondition; modulesCollection.Add(moduleAction); configLoader.Save(); } else { throw new InvalidOperationException(SR.GetString(SR.IIS7ConfigurationSectionNotFound, this.configLoader.HttpModulesSectionPath)); } } else { EventLogger.LogWarning(SR.GetString(SR.HttpModulesComponentAlreadyExists, ServiceModelInstallStrings.ServiceModel), (OutputLevel.Verbose == outputLevel)); } } internal override void Uninstall(OutputLevel outputLevel) { if (this.IsInstalled) { WebAdmin.ConfigurationElementCollection modulesCollection = this.configLoader.HttpModulesSection.GetCollection(); // ModulesCollection does not have a unique key, thus need to enumerate collection rather than check for key // Also, Microsoft.Web.Administration.ConfigurationElementCollection.Remove(element) does not work here. It // translates (bug?) to RemoveAt(-1) which fails. Instead, get index manually and call RemoveAt(int) directly. for (int i = 0; i < modulesCollection.Count; i++) { WebAdmin.ConfigurationElement element = modulesCollection[i]; if (((string)element.GetAttribute(ServiceModelInstallStrings.Name).Value).Equals(ServiceModelInstallStrings.ServiceModel, StringComparison.OrdinalIgnoreCase)) { modulesCollection.RemoveAt(i); configLoader.Save(); break; } } } else { EventLogger.LogWarning(SR.GetString(SR.HttpModulesComponentNotInstalled, ServiceModelInstallStrings.ServiceModel), (OutputLevel.Verbose == outputLevel)); } } internal override InstallationState VerifyInstall() { InstallationState installState = InstallationState.Unknown; if (this.IsInstalled) { WebAdmin.ConfigurationElement httpModule = this.GetHttpModuleFromCollection(); if (null != httpModule.GetAttribute(ServiceModelInstallStrings.Type) && ((string)httpModule.GetAttribute(ServiceModelInstallStrings.Type).Value).Equals(ServiceModelInstallStrings.HttpModulesType, StringComparison.OrdinalIgnoreCase) && null != httpModule.GetAttribute(ServiceModelInstallStrings.PreCondition) && ((string)httpModule.GetAttribute(ServiceModelInstallStrings.PreCondition).Value).Equals(ServiceModelInstallStrings.WasHttpModulesPreCondition, StringComparison.OrdinalIgnoreCase)) { installState = InstallationState.InstalledDefaults; } else { installState = InstallationState.InstalledCustom; } } else { installState = InstallationState.NotInstalled; } return installState; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProfileModule.cs
- DataTable.cs
- CompositeDataBoundControl.cs
- DesigntimeLicenseContext.cs
- ExpandSegmentCollection.cs
- Rfc2898DeriveBytes.cs
- IntPtr.cs
- EncoderReplacementFallback.cs
- DebugInfoGenerator.cs
- NestedContainer.cs
- TypedReference.cs
- ParseHttpDate.cs
- PingOptions.cs
- CodeExporter.cs
- UrlMapping.cs
- ScriptMethodAttribute.cs
- CompressEmulationStream.cs
- XamlHostingSection.cs
- TextServicesHost.cs
- WebPartMenu.cs
- Point3DKeyFrameCollection.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- LineSegment.cs
- SerializationInfo.cs
- CodeDomConfigurationHandler.cs
- RegionData.cs
- TransformGroup.cs
- Point3DCollection.cs
- BuildProvider.cs
- PermissionSet.cs
- TableStyle.cs
- ImageSourceConverter.cs
- RewritingPass.cs
- PropertyMapper.cs
- DataControlPagerLinkButton.cs
- PropertyRef.cs
- OutputWindow.cs
- QilReference.cs
- SimpleTypeResolver.cs
- IndexerNameAttribute.cs
- NetworkInformationException.cs
- COM2Properties.cs
- CreateUserWizardStep.cs
- odbcmetadatafactory.cs
- WindowCollection.cs
- CodeDOMProvider.cs
- MarkupObject.cs
- XmlnsCache.cs
- SelectionItemProviderWrapper.cs
- TypeBrowser.xaml.cs
- wgx_sdk_version.cs
- MemberAccessException.cs
- MaterialGroup.cs
- XmlSchemaAttributeGroupRef.cs
- DataGridItemEventArgs.cs
- SafeNativeMethods.cs
- FlowPanelDesigner.cs
- TreeBuilder.cs
- FormClosedEvent.cs
- ChtmlTextWriter.cs
- HtmlInputCheckBox.cs
- StrokeCollectionDefaultValueFactory.cs
- DataBoundControl.cs
- SqlTriggerAttribute.cs
- AddInEnvironment.cs
- TdsParserStaticMethods.cs
- Signature.cs
- XmlRawWriter.cs
- IProvider.cs
- StylusLogic.cs
- ThemeConfigurationDialog.cs
- ReferencedCollectionType.cs
- CanonicalXml.cs
- ProvidersHelper.cs
- PtsHost.cs
- EpmCustomContentSerializer.cs
- WmlPhoneCallAdapter.cs
- SqlParameterCollection.cs
- FieldAccessException.cs
- CompositionAdorner.cs
- TimelineClockCollection.cs
- InvariantComparer.cs
- DoubleStorage.cs
- PeerApplication.cs
- InputScopeAttribute.cs
- NumericPagerField.cs
- ResourceContainer.cs
- ExtendedProtectionPolicy.cs
- WebPartConnectionsConnectVerb.cs
- ApplicationManager.cs
- EditingScopeUndoUnit.cs
- DebuggerService.cs
- ApplicationManager.cs
- IndentTextWriter.cs
- XmlSchemaSimpleTypeList.cs
- IUnknownConstantAttribute.cs
- SerialErrors.cs
- ListControl.cs
- MetadataElement.cs
- PrimitiveType.cs