Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Tools / WSATConfig / Configuration / WsatServiceAddress.cs / 1305376 / WsatServiceAddress.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.Tools.ServiceModel.WsatConfig
{
using System;
using System.Globalization;
using System.Runtime.InteropServices;
class WsatServiceAddress
{
uint port;
string wsatServiceAddress;
const string wsatServiceAddressFormat = "https://+:{0}/WsatService/";
const string wsatSecurityDescriptor = "D:(A;;GA;;;NS)";
internal WsatServiceAddress(uint port)
{
this.port = port;
wsatServiceAddress = String.Format(CultureInfo.InvariantCulture, wsatServiceAddressFormat, this.port);
}
internal void ReserveWsatServiceAddress()
{
if (Utilities.IsHttpApiLibAvailable)
{
ReserveURL(wsatServiceAddress, wsatSecurityDescriptor);
}
}
internal void FreeWsatServiceAddress()
{
if (Utilities.IsHttpApiLibAvailable)
{
FreeURL(wsatServiceAddress, wsatSecurityDescriptor);
}
}
static void ReserveURL(string networkURL, string securityDescriptor)
{
int retVal = SafeNativeMethods.NoError;
try
{
retVal = SafeNativeMethods.HttpInitialize(HttpWrapper.HttpApiVersion1, SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
if (SafeNativeMethods.NoError == retVal)
{
HttpServiceConfigUrlAclKey keyDesc = new HttpServiceConfigUrlAclKey(networkURL);
HttpServiceConfigUrlAclParam paramDesc = new HttpServiceConfigUrlAclParam(securityDescriptor);
HttpServiceConfigUrlAclSet configInformation = new HttpServiceConfigUrlAclSet();
configInformation.KeyDesc = keyDesc;
configInformation.ParamDesc = paramDesc;
int configInformationLength = Marshal.SizeOf(configInformation);
retVal = SafeNativeMethods.HttpSetServiceConfiguration_UrlAcl(IntPtr.Zero,
HttpServiceConfigId.HttpServiceConfigUrlAclInfo,
ref configInformation,
configInformationLength,
IntPtr.Zero);
if (SafeNativeMethods.ErrorAlreadyExists == retVal)
{
retVal = SafeNativeMethods.HttpDeleteServiceConfiguration_UrlAcl(IntPtr.Zero,
HttpServiceConfigId.HttpServiceConfigUrlAclInfo,
ref configInformation,
configInformationLength,
IntPtr.Zero);
if (SafeNativeMethods.NoError == retVal)
{
retVal = SafeNativeMethods.HttpSetServiceConfiguration_UrlAcl(IntPtr.Zero,
HttpServiceConfigId.HttpServiceConfigUrlAclInfo,
ref configInformation,
configInformationLength,
IntPtr.Zero);
}
}
}
}
finally
{
SafeNativeMethods.HttpTerminate(SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
}
if (SafeNativeMethods.NoError != retVal)
{
if (SafeNativeMethods.ErrorAlreadyExists == retVal)
{
throw new WsatAdminException(WsatAdminErrorCode.REGISTER_HTTPS_PORT_ALREADYEXISTS,
SR.GetString(SR.ErrorRegisterHttpsPortAlreadyExists));
}
else
{
throw new WsatAdminException(WsatAdminErrorCode.REGISTER_HTTPS_PORT,
SR.GetString(SR.ErrorRegisterHttpsPort, retVal));
}
}
}
static void FreeURL(string networkURL, string securityDescriptor)
{
int retVal = SafeNativeMethods.NoError;
try
{
retVal = SafeNativeMethods.HttpInitialize(HttpWrapper.HttpApiVersion1, SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
if (SafeNativeMethods.NoError == retVal)
{
HttpServiceConfigUrlAclKey urlAclKey = new HttpServiceConfigUrlAclKey(networkURL);
HttpServiceConfigUrlAclParam urlAclParam = new HttpServiceConfigUrlAclParam(securityDescriptor);
HttpServiceConfigUrlAclSet configInformation = new HttpServiceConfigUrlAclSet();
configInformation.KeyDesc = urlAclKey;
configInformation.ParamDesc = urlAclParam;
int configInformationSize = Marshal.SizeOf(configInformation);
retVal = SafeNativeMethods.HttpDeleteServiceConfiguration_UrlAcl(IntPtr.Zero,
HttpServiceConfigId.HttpServiceConfigUrlAclInfo,
ref configInformation,
configInformationSize,
IntPtr.Zero);
}
}
finally
{
SafeNativeMethods.HttpTerminate(SafeNativeMethods.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
}
if (retVal != SafeNativeMethods.NoError && retVal != SafeNativeMethods.FileNotFound && retVal != SafeNativeMethods.ErrorInvalidParameter)
{
throw new WsatAdminException(WsatAdminErrorCode.UNREGISTER_HTTPS_PORT,
SR.GetString(SR.ErrorUnregisterHttpsPort, retVal));
}
}
}
}
// 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
- CodeGeneratorOptions.cs
- Size.cs
- _NativeSSPI.cs
- SearchForVirtualItemEventArgs.cs
- BitmapEncoder.cs
- SymmetricCryptoHandle.cs
- EnterpriseServicesHelper.cs
- WSMessageEncoding.cs
- DataPagerFieldCollection.cs
- ToolStripStatusLabel.cs
- BitVector32.cs
- Directory.cs
- DrawingDrawingContext.cs
- EventLogPermissionEntryCollection.cs
- DataGridViewRowConverter.cs
- PTProvider.cs
- EventSinkHelperWriter.cs
- RadioButtonPopupAdapter.cs
- XmlSchemaProviderAttribute.cs
- ProtectedProviderSettings.cs
- CompilerError.cs
- CurrencyWrapper.cs
- SchemaImporterExtensionsSection.cs
- MemberInfoSerializationHolder.cs
- StreamGeometry.cs
- HttpCachePolicyElement.cs
- AccessViolationException.cs
- SqlException.cs
- EventArgs.cs
- PrimarySelectionAdorner.cs
- ProxySimple.cs
- TreeNodeSelectionProcessor.cs
- RelationshipConstraintValidator.cs
- IdentityReference.cs
- MachineSettingsSection.cs
- HealthMonitoringSectionHelper.cs
- DataGridDetailsPresenter.cs
- Label.cs
- SystemIcons.cs
- TypeHelpers.cs
- QuadraticBezierSegment.cs
- DataBoundControlAdapter.cs
- TripleDES.cs
- SoapFormatExtensions.cs
- DrawingDrawingContext.cs
- HashStream.cs
- ComplexBindingPropertiesAttribute.cs
- DbException.cs
- AtomContentProperty.cs
- DoubleIndependentAnimationStorage.cs
- Convert.cs
- MaskDescriptor.cs
- TdsEnums.cs
- ExceptionHandlers.cs
- PackageStore.cs
- FixedSOMElement.cs
- TextParagraphCache.cs
- NotifyInputEventArgs.cs
- ReflectionTypeLoadException.cs
- CodeAttributeArgument.cs
- Link.cs
- XmlComplianceUtil.cs
- IssuanceLicense.cs
- HandleCollector.cs
- ZoneIdentityPermission.cs
- ChangeConflicts.cs
- SettingsPropertyValueCollection.cs
- PackageProperties.cs
- XmlDataProvider.cs
- SafeNativeMethods.cs
- MeasureItemEvent.cs
- Domain.cs
- DataGridViewCellStateChangedEventArgs.cs
- DesignTimeVisibleAttribute.cs
- GeometryGroup.cs
- ObjectResult.cs
- SQlBooleanStorage.cs
- SuppressIldasmAttribute.cs
- TemplateField.cs
- EditorZone.cs
- HttpChannelFactory.cs
- Base64Encoding.cs
- BufferModesCollection.cs
- SqlAggregateChecker.cs
- KeyConverter.cs
- RepeatButtonAutomationPeer.cs
- SqlBooleanizer.cs
- ProfileSettings.cs
- AccessControlEntry.cs
- BaseCAMarshaler.cs
- UniqueSet.cs
- InputLanguageProfileNotifySink.cs
- HitTestWithPointDrawingContextWalker.cs
- CodeCommentStatement.cs
- ProcessHostMapPath.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- GlyphRunDrawing.cs
- KeyTime.cs
- OdbcCommandBuilder.cs
- ButtonFlatAdapter.cs