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
- Control.cs
- FixedStringLookup.cs
- ComponentResourceManager.cs
- XmlAttributeProperties.cs
- WebPartConnectionCollection.cs
- TreeNodeStyle.cs
- BasicCellRelation.cs
- WebBaseEventKeyComparer.cs
- RoleBoolean.cs
- SinglePageViewer.cs
- WinInet.cs
- PersianCalendar.cs
- PartialTrustVisibleAssembly.cs
- EntityDesignerDataSourceView.cs
- DataGridItemCollection.cs
- ProtocolsConfigurationEntry.cs
- NetNamedPipeBindingCollectionElement.cs
- CoTaskMemHandle.cs
- DataSetUtil.cs
- mediaeventargs.cs
- RoutedEventConverter.cs
- OuterGlowBitmapEffect.cs
- TimeoutValidationAttribute.cs
- OutputCacheSection.cs
- MediaContext.cs
- ReadOnlyPropertyMetadata.cs
- LinqDataSourceContextEventArgs.cs
- PropertyTab.cs
- XpsFilter.cs
- TextBoxLine.cs
- DetailsView.cs
- coordinator.cs
- PageStatePersister.cs
- WeakEventManager.cs
- ClonableStack.cs
- PartialCachingControl.cs
- CodeBinaryOperatorExpression.cs
- CuspData.cs
- APCustomTypeDescriptor.cs
- _AutoWebProxyScriptEngine.cs
- XhtmlBasicControlAdapter.cs
- ObjectCache.cs
- DataContext.cs
- ValidationEventArgs.cs
- ResourceReferenceExpressionConverter.cs
- RepeatButton.cs
- XPathDocumentIterator.cs
- EntitySetDataBindingList.cs
- LocatorPartList.cs
- JpegBitmapDecoder.cs
- KnownTypesHelper.cs
- MailMessageEventArgs.cs
- PathSegment.cs
- DecimalKeyFrameCollection.cs
- QilStrConcatenator.cs
- UnsafeNativeMethods.cs
- HttpRuntimeSection.cs
- Base64Stream.cs
- PolicyImporterElementCollection.cs
- HtmlInputHidden.cs
- SqlBooleanMismatchVisitor.cs
- MediaPlayerState.cs
- PropertyItem.cs
- _AutoWebProxyScriptEngine.cs
- EditingCoordinator.cs
- Thread.cs
- StructuralCache.cs
- LinkArea.cs
- DateTimePickerDesigner.cs
- DetailsViewDeleteEventArgs.cs
- ObservableDictionary.cs
- TemplateBamlTreeBuilder.cs
- RepeatButton.cs
- XmlSchemaIdentityConstraint.cs
- CodeIterationStatement.cs
- PersonalizationAdministration.cs
- AbstractDataSvcMapFileLoader.cs
- TextSelectionHighlightLayer.cs
- DictionaryContent.cs
- StrongNameUtility.cs
- SqlUserDefinedAggregateAttribute.cs
- DriveInfo.cs
- ApplicationSettingsBase.cs
- ComponentChangedEvent.cs
- SiteMap.cs
- NullableConverter.cs
- Semaphore.cs
- RelationshipWrapper.cs
- LocatorManager.cs
- ListBoxAutomationPeer.cs
- InkSerializer.cs
- BitmapFrameEncode.cs
- HttpModuleCollection.cs
- MenuItemAutomationPeer.cs
- FilterUserControlBase.cs
- ThreadStateException.cs
- WebDescriptionAttribute.cs
- CapabilitiesRule.cs
- DataGridClipboardHelper.cs
- PathGeometry.cs