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
- ToolboxComponentsCreatingEventArgs.cs
- WebPartDisplayModeEventArgs.cs
- CultureSpecificCharacterBufferRange.cs
- DrawingAttributesDefaultValueFactory.cs
- FacetEnabledSchemaElement.cs
- QilStrConcatenator.cs
- CollectionDataContractAttribute.cs
- LogAppendAsyncResult.cs
- DrawingCollection.cs
- StateMachine.cs
- Section.cs
- AppDomainUnloadedException.cs
- DataObjectPastingEventArgs.cs
- Helpers.cs
- WindowsListViewGroup.cs
- PrintDialog.cs
- NewArrayExpression.cs
- ProfileModule.cs
- DateTimeSerializationSection.cs
- RelationshipConverter.cs
- EventManager.cs
- ProtocolsSection.cs
- XmlException.cs
- WindowPattern.cs
- NonBatchDirectoryCompiler.cs
- EarlyBoundInfo.cs
- Char.cs
- ActivityScheduledRecord.cs
- SimpleHandlerFactory.cs
- CodeTypeReference.cs
- BitConverter.cs
- LockCookie.cs
- ExceptionAggregator.cs
- RadioButtonList.cs
- ScrollBarRenderer.cs
- TextReader.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- Delegate.cs
- IndentTextWriter.cs
- ControlCollection.cs
- IISUnsafeMethods.cs
- HtmlEmptyTagControlBuilder.cs
- BaseComponentEditor.cs
- StorageInfo.cs
- Config.cs
- StrokeCollection.cs
- WindowInteractionStateTracker.cs
- MemoryRecordBuffer.cs
- ContentElement.cs
- SystemIPv4InterfaceProperties.cs
- UIElementPropertyUndoUnit.cs
- ProtocolProfile.cs
- ImagingCache.cs
- MenuItemBindingCollection.cs
- GenericAuthenticationEventArgs.cs
- PrimitiveCodeDomSerializer.cs
- AxisAngleRotation3D.cs
- LayoutManager.cs
- AffineTransform3D.cs
- MobileListItem.cs
- XmlParser.cs
- HtmlContainerControl.cs
- BindingOperations.cs
- WindowsAuthenticationEventArgs.cs
- PointHitTestResult.cs
- WebPartUtil.cs
- ValidationEventArgs.cs
- DataSetMappper.cs
- SystemIcmpV4Statistics.cs
- ExtendedPropertyDescriptor.cs
- ExtensionSimplifierMarkupObject.cs
- PageSettings.cs
- HandleRef.cs
- ValidationRuleCollection.cs
- WebBrowser.cs
- RandomNumberGenerator.cs
- SqlConnectionString.cs
- ConstraintManager.cs
- HttpProfileBase.cs
- GifBitmapEncoder.cs
- ToolStripButton.cs
- LiteralControl.cs
- CustomError.cs
- SamlAttributeStatement.cs
- FontCacheUtil.cs
- DataControlLinkButton.cs
- figurelengthconverter.cs
- PersistChildrenAttribute.cs
- LinkLabelLinkClickedEvent.cs
- MouseButtonEventArgs.cs
- CellNormalizer.cs
- KeyEventArgs.cs
- HttpCookieCollection.cs
- CustomAttributeSerializer.cs
- CollectionBuilder.cs
- SoapTypeAttribute.cs
- PrintingPermission.cs
- CodeArrayIndexerExpression.cs
- OutputCacheSettings.cs
- VisualStyleRenderer.cs