WasHttpModulesInstallComponent.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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
            {
                List installedVersions = 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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK