Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / Configuration / HttpHandlersInstallComponent.cs / 1 / HttpHandlersInstallComponent.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install.Configuration { using System; using System.Collections.Generic; using System.Configuration; using System.Globalization; using System.Text; using System.Web.Configuration; internal class HttpHandlersInstallComponent : ServiceModelInstallComponent { ConfigurationLoader configLoader; string displayString; HttpHandlersInstallComponent(ConfigurationLoader configLoader) { this.configLoader = configLoader; } internal override string DisplayName { get {return this.displayString; } } protected override string InstallActionMessage { get {return SR.GetString(SR.HttpHandlersComponentInstall, ServiceModelInstallStrings.HttpHandlersPath); } } internal override string[] InstalledVersions { get { ListinstalledVersions = new List (); if (null != configLoader.SystemWebSectionGroup) { // Foreach needed here since HttpHandlerActionCollection does not have an accessor that takes a string foreach (HttpHandlerAction handler in configLoader.SystemWebSectionGroup.HttpHandlers.Handlers) { if (handler.Path.Equals(ServiceModelInstallStrings.HttpHandlersPath, StringComparison.OrdinalIgnoreCase)) { Type type = GetHandlerType(handler.Type); string versionString = null; if (type != null) { versionString = handler.Path + ServiceModelInstallStrings.VersionStringSeparator + InstallHelper.GetVersionStringFromTypeString(type.AssemblyQualifiedName); } else { versionString = handler.Path + ServiceModelInstallStrings.VersionStringSeparator + handler.Type; } installedVersions.Add(versionString); } } } return installedVersions.ToArray(); } } internal override bool IsInstalled { get { if (null != configLoader.SystemWebSectionGroup) { Type forbiddenHandlerType = GetHandlerType(ServiceModelInstallStrings.HttpForbiddenHandlerType); // Foreach needed here since HttpHandlerActionCollection does not have an accessor that takes a string foreach (HttpHandlerAction installedHandler in configLoader.SystemWebSectionGroup.HttpHandlers.Handlers) { if (installedHandler.Path.Equals(ServiceModelInstallStrings.HttpHandlersPath, StringComparison.OrdinalIgnoreCase)) { Type type = GetHandlerType(installedHandler.Type); // Only if the type is Forbidden we assume it's installed. if (type == null || !type.Equals(forbiddenHandlerType)) { return true; } } } } return false; } } protected override string ReinstallActionMessage { get {return SR.GetString(SR.HttpHandlersComponentReinstall, ServiceModelInstallStrings.HttpHandlersPath); } } protected override string UninstallActionMessage { get {return SR.GetString(SR.HttpHandlersComponentUninstall, ServiceModelInstallStrings.HttpHandlersPath); } } internal static HttpHandlersInstallComponent CreateNativeHttpHandlersInstallComponent() { HttpHandlersInstallComponent httpHandlersComponent = new HttpHandlersInstallComponent(new NativeConfigurationLoader()); httpHandlersComponent.displayString = SR.GetString(SR.HttpHandlersComponentName); return httpHandlersComponent; } internal static HttpHandlersInstallComponent CreateWow64HttpHandlersInstallComponent() { if (!InstallHelper.Is64BitMachine() || String.IsNullOrEmpty(InstallHelper.Wow64WebConfigFileName)) { throw new ConfigurationLoaderException(SR.GetString(SR.Wow64NotInstalled)); } HttpHandlersInstallComponent httpHandlersComponent = new HttpHandlersInstallComponent(new Wow64ConfigurationLoader()); httpHandlersComponent.displayString = SR.GetString(SR.HttpHandlersComponentNameWow64); return httpHandlersComponent; } internal static Type GetHandlerType(string typeName) { Type type = Type.GetType(typeName, false); if (type == null) { // Try System.Web type = typeof(System.Web.IHttpHandler).Assembly.GetType(typeName, false); } return type; } internal override void Install(OutputLevel outputLevel) { if (!this.IsInstalled) { if (null != configLoader.SystemWebSectionGroup) { List handlerList = new List (); HttpHandlerActionCollection handlers = configLoader.SystemWebSectionGroup.HttpHandlers.Handlers; // Foreach needed here since HttpHandlerActionCollection does not have an accessor that takes a string foreach (HttpHandlerAction handler in handlers) { if (string.CompareOrdinal(handler.Path, ServiceModelInstallStrings.WildCardHttpHandlerPath) == 0) { handlerList.Add(handler); } } // Adding Indigo handler handlers.Add(new HttpHandlerAction(ServiceModelInstallStrings.HttpHandlersPath, ServiceModelInstallStrings.HttpHandlersType, ServiceModelInstallStrings.HttpHandlersVerb, false)); for (int i = 0; i < handlerList.Count; i++) { handlers.Remove(handlerList[i]); } configLoader.Save(); // Move wildcard handlers to the end of the collection: // need to refresh our config objects, or the old config/section will retain information on their original position handlers = configLoader.SystemWebSectionGroup.HttpHandlers.Handlers; for (int i = 0; i < handlerList.Count; i++) { handlers.Add(handlerList[i]); } configLoader.Save(); } else { throw new InvalidOperationException(SR.GetString(SR.ConfigurationSectionNotInstalled, configLoader.SystemWebSectionGroupPath, configLoader.RootWebConfigurationFilePath)); } } else { EventLogger.LogWarning(SR.GetString(SR.HttpHandlersComponentAlreadyExists, ServiceModelInstallStrings.HttpHandlersPath), (OutputLevel.Verbose == outputLevel)); } } internal override void Uninstall(OutputLevel outputLevel) { if (this.IsInstalled) { // Remove the httpHandlers node // Foreach needed here since HttpHandlerActionCollection does not have an accessor that takes a string foreach (HttpHandlerAction installedHandler in configLoader.SystemWebSectionGroup.HttpHandlers.Handlers) { if (installedHandler.Path.Equals(ServiceModelInstallStrings.HttpHandlersPath, StringComparison.OrdinalIgnoreCase)) { installedHandler.Type = ServiceModelInstallStrings.HttpForbiddenHandlerType; installedHandler.Validate = true; } } configLoader.Save(); } else { EventLogger.LogWarning(SR.GetString(SR.HttpHandlersComponentNotInstalled, ServiceModelInstallStrings.HttpHandlersPath), (OutputLevel.Verbose == outputLevel)); } } internal override InstallationState VerifyInstall() { InstallationState installState = InstallationState.Unknown; if (this.IsInstalled) { if (null != configLoader.SystemWebSectionGroup) { HttpHandlerAction handler = new HttpHandlerAction(ServiceModelInstallStrings.HttpHandlersPath, ServiceModelInstallStrings.HttpHandlersType, ServiceModelInstallStrings.HttpHandlersVerb, false); // Foreach needed here since HttpHandlerActionCollection does not have an accessor that takes a string foreach (HttpHandlerAction installedHandler in configLoader.SystemWebSectionGroup.HttpHandlers.Handlers) { if (handler.Path.Equals(installedHandler.Path, StringComparison.OrdinalIgnoreCase)) { if (installedHandler.Equals(handler)) { 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
- QilCloneVisitor.cs
- TextSegment.cs
- XmlTextReaderImpl.cs
- SqlException.cs
- HtmlWindow.cs
- ExpressionBindings.cs
- TemplateContentLoader.cs
- ResourceReferenceExpression.cs
- PanelStyle.cs
- ArgumentsParser.cs
- XmlEntityReference.cs
- ExtendedPropertyCollection.cs
- HttpSessionStateWrapper.cs
- RequestCacheManager.cs
- WebGetAttribute.cs
- SqlException.cs
- DataGridViewTopRowAccessibleObject.cs
- InteropAutomationProvider.cs
- DeviceContext2.cs
- Int32.cs
- View.cs
- ellipse.cs
- ChannelManagerService.cs
- LookupBindingPropertiesAttribute.cs
- GeometryHitTestParameters.cs
- basevalidator.cs
- DataGridViewCellStyleConverter.cs
- PerformanceCounterPermission.cs
- RIPEMD160.cs
- DBParameter.cs
- SqlRetyper.cs
- TextDecoration.cs
- QilNode.cs
- RegisteredExpandoAttribute.cs
- TraceListener.cs
- ConnectionStringsExpressionBuilder.cs
- BinaryFormatter.cs
- ReadOnlyDictionary.cs
- Triangle.cs
- SortedList.cs
- EventEntry.cs
- XdrBuilder.cs
- CommunicationObjectManager.cs
- sqlcontext.cs
- InputScope.cs
- SystemDropShadowChrome.cs
- ObjectStateManagerMetadata.cs
- util.cs
- XNodeSchemaApplier.cs
- InnerItemCollectionView.cs
- RequestCacheEntry.cs
- PrintDialogException.cs
- CodeObject.cs
- AppSettingsReader.cs
- RectAnimationClockResource.cs
- PolyQuadraticBezierSegment.cs
- MultitargetUtil.cs
- MarkedHighlightComponent.cs
- SqlCommandBuilder.cs
- CheckBoxList.cs
- wgx_exports.cs
- ReverseQueryOperator.cs
- Clause.cs
- CompilerCollection.cs
- JournalEntry.cs
- TextElementEnumerator.cs
- CellParaClient.cs
- FilteredDataSetHelper.cs
- MetadataSerializer.cs
- WindowsTreeView.cs
- Environment.cs
- BinHexDecoder.cs
- TranslateTransform.cs
- ButtonAutomationPeer.cs
- Monitor.cs
- InputProviderSite.cs
- UpdateRecord.cs
- FillRuleValidation.cs
- SoapExtensionReflector.cs
- x509store.cs
- XpsSerializationException.cs
- HMAC.cs
- SequenceRange.cs
- ChannelProtectionRequirements.cs
- Trigger.cs
- TextBoxLine.cs
- UInt64.cs
- StringTraceRecord.cs
- StaticFileHandler.cs
- MatrixTransform3D.cs
- MenuItemBindingCollection.cs
- PartialTrustHelpers.cs
- WindowHelperService.cs
- ExpressionBuilderContext.cs
- CaretElement.cs
- SqlUtils.cs
- Knowncolors.cs
- updatecommandorderer.cs
- ToolboxService.cs
- XPathSelfQuery.cs