Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / HttpNamespaceReservationInstallComponent.cs / 1 / HttpNamespaceReservationInstallComponent.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install { using System.ComponentModel; using System.Runtime.InteropServices; class HttpNamespaceReservationInstallComponent : ServiceModelInstallComponent { internal override string DisplayName { get {return SR.GetString(SR.HttpNamespaceReservationsName); } } protected override string InstallActionMessage { get {return SR.GetString(SR.HttpNamespaceReservationsInstall); } } internal override string[] InstalledVersions { get { string[] result; if (this.IsInstalled) { result = new string[] {ServiceModelInstallStrings.ReservedNamespace}; } else { result = new string[] {}; } return result; } } internal override bool IsInstalled { get { bool result; try { int retVal = NativeMethods.HttpInitialize(NativeMethods.HTTPAPI_VERSION, NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); if (retVal != ErrorCodes.NoError) { #pragma warning suppress 56503 // [....]; not a publicly accessible API throw new Win32Exception(retVal); } HTTP_SERVICE_CONFIG_URLACL_QUERY query = new HTTP_SERVICE_CONFIG_URLACL_QUERY(); query.QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryExact; query.KeyDesc = new HTTP_SERVICE_CONFIG_URLACL_KEY(ServiceModelInstallStrings.ReservedNamespace); int returnLength; retVal = NativeMethods.HttpQueryServiceConfiguration(IntPtr.Zero, HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo, ref query, Marshal.SizeOf(query), IntPtr.Zero, 0, out returnLength, IntPtr.Zero); switch (retVal) { case ErrorCodes.NoError: case ErrorCodes.ErrorInsufficientBuffer: result = true; break; case ErrorCodes.ErrorFileNotFound: result = false; break; default: #pragma warning suppress 56503 // [....]; not a publicly accessible API throw new Win32Exception(retVal); } } finally { #pragma warning disable 56523 //[....]; Win32 errors tracked through method return value #pragma warning disable 56031 //[....]; No need to check return value since shutting down NativeMethods.HttpTerminate(NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); #pragma restore } return result; } } protected override string ReinstallActionMessage { get {return SR.GetString(SR.HttpNamespaceReservationsReinstall); } } protected override string UninstallActionMessage { get {return SR.GetString(SR.HttpNamespaceReservationsUninstall); } } static void FreeURL(string networkURL) { int retVal = ErrorCodes.NoError; try { #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpInitialize(NativeMethods.HTTPAPI_VERSION, NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); if (ErrorCodes.NoError == retVal) { HTTP_SERVICE_CONFIG_URLACL_KEY urlAclKey = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURL); HTTP_SERVICE_CONFIG_URLACL_SET configInformation = new HTTP_SERVICE_CONFIG_URLACL_SET(); configInformation.KeyDesc = urlAclKey; int configInformationSize = Marshal.SizeOf(configInformation); #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpDeleteServiceConfiguration(IntPtr.Zero, HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo, ref configInformation, configInformationSize, IntPtr.Zero); } } finally { #pragma warning disable 56523 //[....]; Win32 errors tracked through method return value #pragma warning disable 56031 //[....]; No need to check return value since shutting down NativeMethods.HttpTerminate(NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); #pragma restore } if (ErrorCodes.NoError != retVal) { throw new Win32Exception(retVal); } } internal override void Install(OutputLevel outputLevel) { if (this.IsInstalled) { EventLogger.LogWarning(SR.GetString(SR.HttpNamespaceReservationsAlreadyExist), (OutputLevel.Verbose == outputLevel)); } else { bool throwing = true; try { ReserveURL(ServiceModelInstallStrings.ReservedNamespace, ServiceModelInstallStrings.ReservedNamespaceAcl); throwing = false; } finally { if (throwing) { FreeURL(ServiceModelInstallStrings.ReservedNamespace); } } } } static void ReserveURL(string networkURL, string securityDescriptor) { int retVal = ErrorCodes.NoError; try { #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpInitialize(NativeMethods.HTTPAPI_VERSION, NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); if (ErrorCodes.NoError == retVal) { HTTP_SERVICE_CONFIG_URLACL_KEY keyDesc = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURL); HTTP_SERVICE_CONFIG_URLACL_PARAM paramDesc = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor); HTTP_SERVICE_CONFIG_URLACL_SET configInformation = new HTTP_SERVICE_CONFIG_URLACL_SET(); configInformation.KeyDesc = keyDesc; configInformation.ParamDesc = paramDesc; int configInformationLength = Marshal.SizeOf(configInformation); #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpSetServiceConfiguration(IntPtr.Zero, HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo, ref configInformation, configInformationLength, IntPtr.Zero); if (ErrorCodes.ErrorAlreadyExists == retVal) { #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpDeleteServiceConfiguration(IntPtr.Zero, HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo, ref configInformation, configInformationLength, IntPtr.Zero); if (ErrorCodes.NoError == retVal) { #pragma warning suppress 56523 //[....]; Win32 errors tracked through method return value retVal = NativeMethods.HttpSetServiceConfiguration(IntPtr.Zero, HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo, ref configInformation, configInformationLength, IntPtr.Zero); } } } } finally { #pragma warning disable 56523 //[....]; Win32 errors tracked through method return value #pragma warning disable 56031 //[....]; No need to check return value since shutting down NativeMethods.HttpTerminate(NativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero); #pragma restore } if (ErrorCodes.NoError != retVal) { throw new Win32Exception(retVal); } } internal override void Uninstall(OutputLevel outputLevel) { if (!this.IsInstalled) { EventLogger.LogWarning(SR.GetString(SR.HttpNamespaceReservationsNotInstalled), (OutputLevel.Verbose == outputLevel)); } else { try { FreeURL(ServiceModelInstallStrings.ReservedNamespace); } catch (Win32Exception exception) { EventLogger.LogWarning(SR.GetString(SR.FreeHttpNamespaceFailed, exception), (OutputLevel.Quiet < outputLevel)); } } } internal override InstallationState VerifyInstall() { return this.IsInstalled ? InstallationState.InstalledDefaults : InstallationState.NotInstalled; } } } // 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
- DetailsViewPagerRow.cs
- RequestSecurityToken.cs
- OleDbErrorCollection.cs
- SudsParser.cs
- RTLAwareMessageBox.cs
- PropertySegmentSerializationProvider.cs
- AstTree.cs
- QilTernary.cs
- MultipartIdentifier.cs
- IUnknownConstantAttribute.cs
- TableRowsCollectionEditor.cs
- SelectionChangedEventArgs.cs
- SrgsRulesCollection.cs
- QuaternionRotation3D.cs
- XmlSchema.cs
- SQLInt16Storage.cs
- FixUpCollection.cs
- FamilyMapCollection.cs
- TextEditorSelection.cs
- XmlIterators.cs
- MultiplexingDispatchMessageFormatter.cs
- UInt64.cs
- securitycriticaldataformultiplegetandset.cs
- OdbcConnectionPoolProviderInfo.cs
- ToolStripSystemRenderer.cs
- WindowsNonControl.cs
- URLMembershipCondition.cs
- MetadataArtifactLoader.cs
- Property.cs
- Html32TextWriter.cs
- InkCanvasSelection.cs
- OracleBFile.cs
- RefType.cs
- PrimitiveCodeDomSerializer.cs
- EditBehavior.cs
- MethodRental.cs
- _NestedMultipleAsyncResult.cs
- CurrentChangingEventManager.cs
- Vector3D.cs
- FixedDocumentPaginator.cs
- DataViewSetting.cs
- OleDbRowUpdatedEvent.cs
- PointF.cs
- EdmEntityTypeAttribute.cs
- DynamicDiscoSearcher.cs
- FormViewRow.cs
- FileDialog_Vista.cs
- ContentPlaceHolder.cs
- ColumnResult.cs
- ElementUtil.cs
- CollectionExtensions.cs
- SoapAttributeOverrides.cs
- WebPartConnectionCollection.cs
- RelativeSource.cs
- LogicalExpr.cs
- SyndicationDeserializer.cs
- MouseBinding.cs
- BidOverLoads.cs
- CapabilitiesPattern.cs
- XmlSignificantWhitespace.cs
- EmptyEnumerator.cs
- TreeNodeMouseHoverEvent.cs
- SafeCloseHandleCritical.cs
- SelectionUIService.cs
- BuildProvider.cs
- ThreadExceptionEvent.cs
- util.cs
- DispatchChannelSink.cs
- HostProtectionException.cs
- ToolBarPanel.cs
- XmlFormatExtensionAttribute.cs
- ClientProtocol.cs
- GradientBrush.cs
- AppDomainFactory.cs
- ContentOperations.cs
- CryptoApi.cs
- DataGridColumnHeaderAutomationPeer.cs
- AnonymousIdentificationModule.cs
- FontResourceCache.cs
- LocalizationComments.cs
- SourceSwitch.cs
- WebHeaderCollection.cs
- HashCodeCombiner.cs
- DocobjHost.cs
- QuadraticBezierSegment.cs
- EdmFunction.cs
- NavigationWindow.cs
- SplitterDesigner.cs
- ArcSegment.cs
- PrePrepareMethodAttribute.cs
- RawStylusInputCustomData.cs
- XmlDataLoader.cs
- EventData.cs
- Helper.cs
- WpfXamlMember.cs
- LinearQuaternionKeyFrame.cs
- EmptyEnumerable.cs
- InputScopeManager.cs
- EditBehavior.cs
- TableMethodGenerator.cs