Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / WSATConfig / Configuration / WsatServiceAddress.cs / 1 / 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.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WmlSelectionListAdapter.cs
- validation.cs
- MetadataUtilsSmi.cs
- ProfileModule.cs
- Msec.cs
- DeobfuscatingStream.cs
- Pkcs7Recipient.cs
- MessageFilter.cs
- SoapMessage.cs
- ProfileEventArgs.cs
- SessionKeyExpiredException.cs
- GridViewCommandEventArgs.cs
- CheckBoxField.cs
- SqlDataSourceQueryConverter.cs
- ErrorStyle.cs
- TileModeValidation.cs
- EventTask.cs
- FloaterParaClient.cs
- VariableBinder.cs
- TimeSpanSecondsConverter.cs
- DataBoundControlHelper.cs
- TargetParameterCountException.cs
- LateBoundBitmapDecoder.cs
- StylusDownEventArgs.cs
- ProxyManager.cs
- CodeCastExpression.cs
- SafePointer.cs
- Point4D.cs
- StdValidatorsAndConverters.cs
- assemblycache.cs
- AdapterUtil.cs
- PersonalizationStateQuery.cs
- Formatter.cs
- Int64AnimationUsingKeyFrames.cs
- RoutingTable.cs
- XmlSchemaSimpleContentRestriction.cs
- UnsafeNativeMethods.cs
- DetailsViewDeletedEventArgs.cs
- DesignerResources.cs
- NamespaceList.cs
- BlurEffect.cs
- TextSelectionProcessor.cs
- SubtreeProcessor.cs
- TreeNodeConverter.cs
- TraceContextRecord.cs
- Imaging.cs
- ProviderException.cs
- EditingCommands.cs
- VScrollBar.cs
- SoapSchemaImporter.cs
- OdbcDataReader.cs
- OutputCacheModule.cs
- TrackingLocationCollection.cs
- WindowPattern.cs
- Animatable.cs
- ObjectDataSourceMethodEditor.cs
- QueryOutputWriter.cs
- FixedPageProcessor.cs
- MimeMapping.cs
- InheritanceAttribute.cs
- SqlClientPermission.cs
- FilteredDataSetHelper.cs
- DomainConstraint.cs
- ConfigurationUtility.cs
- HtmlForm.cs
- UInt16Converter.cs
- SpeechDetectedEventArgs.cs
- ListMarkerSourceInfo.cs
- DataPagerFieldCollection.cs
- CopyAttributesAction.cs
- BindableTemplateBuilder.cs
- WebResponse.cs
- BitSet.cs
- Mapping.cs
- DesignerActionTextItem.cs
- Subtree.cs
- Range.cs
- WindowsListViewScroll.cs
- TypeLibraryHelper.cs
- PropertyDescriptorGridEntry.cs
- DocumentsTrace.cs
- TaiwanLunisolarCalendar.cs
- ToolStripStatusLabel.cs
- UIElement3D.cs
- ControllableStoryboardAction.cs
- DataGridViewSelectedColumnCollection.cs
- EncryptedXml.cs
- Input.cs
- ByteBufferPool.cs
- HTTPNotFoundHandler.cs
- GridViewPageEventArgs.cs
- PtsHelper.cs
- CompilerGeneratedAttribute.cs
- WindowsListViewScroll.cs
- WrapperSecurityCommunicationObject.cs
- ServiceCredentialsElement.cs
- ColorConvertedBitmapExtension.cs
- CodeMemberField.cs
- LockedActivityGlyph.cs
- InvokePattern.cs