Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / Configuration / ConfigurationUtility.cs / 1305376 / ConfigurationUtility.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.ServiceModel.Discovery.Configuration
{
using System.Configuration;
using System.Runtime;
using System.Security;
using System.ServiceModel.Configuration;
using System.ServiceModel.Description;
using SR2 = System.ServiceModel.Discovery.SR;
class ConfigurationUtility
{
public static ChannelEndpointElement GetDefaultDiscoveryEndpointElement()
{
return new ChannelEndpointElement() { Kind = ConfigurationStrings.UdpDiscoveryEndpoint };
}
public static T LookupEndpoint(ChannelEndpointElement channelEndpointElement) where T : ServiceEndpoint
{
Fx.Assert(channelEndpointElement != null, "The parameter channelEndpointElement must be non null.");
Fx.Assert(!string.IsNullOrEmpty(channelEndpointElement.Kind), "The Kind property of the specified channelEndpointElement parameter cannot be null or empty.");
return ConfigLoader.LookupEndpoint(channelEndpointElement, null) as T;
}
internal static void InitializeAndValidateUdpChannelEndpointElement(ChannelEndpointElement channelEndpointElement)
{
if (!String.IsNullOrEmpty(channelEndpointElement.Binding))
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR2.DiscoveryConfigBindingSpecifiedForUdpDiscoveryEndpoint(channelEndpointElement.Kind)));;
}
if (!(channelEndpointElement.Address == null || String.IsNullOrEmpty(channelEndpointElement.Address.ToString())))
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR2.DiscoveryConfigAddressSpecifiedForUdpDiscoveryEndpoint(channelEndpointElement.Kind)));
}
channelEndpointElement.Address = null;
}
internal static void InitializeAndValidateUdpServiceEndpointElement(ServiceEndpointElement serviceEndpointElement)
{
if (!String.IsNullOrEmpty(serviceEndpointElement.Binding))
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR2.DiscoveryConfigBindingSpecifiedForUdpDiscoveryEndpoint(serviceEndpointElement.Kind)));;
}
if (!(serviceEndpointElement.Address == null || String.IsNullOrEmpty(serviceEndpointElement.Address.ToString())))
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR2.DiscoveryConfigAddressSpecifiedForUdpDiscoveryEndpoint(serviceEndpointElement.Kind)));
}
serviceEndpointElement.Address = null;
if (serviceEndpointElement.ListenUri != null)
{
throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR2.DiscoveryConfigListenUriSpecifiedForUdpDiscoveryEndpoint(serviceEndpointElement.Kind)));
}
}
[Fx.Tag.SecurityNote(Critical = "it is calling the SecurityCritical method to load client configuration section",
Safe = "no configuration objects are leaked")]
[SecuritySafeCritical]
internal static TEndpoint LookupEndpointFromClientSection(string endpointConfigurationName) where TEndpoint : ServiceEndpoint
{
Fx.Assert(endpointConfigurationName != null, "The endpointConfigurationName parameter must be non null.");
TEndpoint retval = default(TEndpoint);
bool wildcard = string.Equals(endpointConfigurationName, "*", StringComparison.Ordinal);
ClientSection clientSection = ClientSection.GetSection();
foreach (ChannelEndpointElement channelEndpointElement in clientSection.Endpoints)
{
if (string.IsNullOrEmpty(channelEndpointElement.Kind))
{
continue;
}
if (endpointConfigurationName == channelEndpointElement.Name || wildcard)
{
TEndpoint endpoint = LookupEndpoint(channelEndpointElement);
if (endpoint != null)
{
if (retval != null)
{
if (wildcard)
{
throw FxTrace.Exception.AsError(
new InvalidOperationException(
SR2.DiscoveryConfigMultipleEndpointsMatchWildcard(
typeof(TEndpoint).FullName,
clientSection.SectionInformation.SectionName)));
}
else
{
throw FxTrace.Exception.AsError(
new InvalidOperationException(
SR2.DiscoveryConfigMultipleEndpointsMatch(
typeof(TEndpoint).FullName,
endpointConfigurationName,
clientSection.SectionInformation.SectionName)));
}
}
else
{
retval = endpoint;
}
}
}
}
if (retval == null)
{
if (wildcard)
{
throw FxTrace.Exception.AsError(
new InvalidOperationException(
SR2.DiscoveryConfigNoEndpointsMatchWildcard(
typeof(TEndpoint).FullName,
clientSection.SectionInformation.SectionName)));
}
else
{
throw FxTrace.Exception.AsError(
new InvalidOperationException(
SR2.DiscoveryConfigNoEndpointsMatch(
typeof(TEndpoint).FullName,
endpointConfigurationName,
clientSection.SectionInformation.SectionName)));
}
}
return 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
- JsonObjectDataContract.cs
- ClientTarget.cs
- DataViewListener.cs
- ConfigurationException.cs
- AnnotationAuthorChangedEventArgs.cs
- Listbox.cs
- TreeViewBindingsEditor.cs
- OdbcConnectionString.cs
- TransformerConfigurationWizardBase.cs
- SetMemberBinder.cs
- SqlInternalConnectionTds.cs
- SaveFileDialog.cs
- ColorTranslator.cs
- HTTPAPI_VERSION.cs
- StringResourceManager.cs
- EventEntry.cs
- Ops.cs
- RuntimeDelegateArgument.cs
- InstanceData.cs
- EndpointDiscoveryElement.cs
- PasswordBoxAutomationPeer.cs
- DataRowChangeEvent.cs
- CommandDesigner.cs
- PageCatalogPart.cs
- MessageFilterException.cs
- DBConcurrencyException.cs
- Variable.cs
- WebPartConnectionsCancelVerb.cs
- ActiveXContainer.cs
- Encoding.cs
- Primitive.cs
- EntityDataSourceUtil.cs
- NoneExcludedImageIndexConverter.cs
- Rotation3D.cs
- PipelineComponent.cs
- ChangesetResponse.cs
- XmlSchemaComplexContent.cs
- NotFiniteNumberException.cs
- Fonts.cs
- RelOps.cs
- _ProxyChain.cs
- XmlEventCache.cs
- BatchWriter.cs
- ResourceAttributes.cs
- AlignmentXValidation.cs
- ExternalException.cs
- BinaryKeyIdentifierClause.cs
- BindableAttribute.cs
- CalendarDateChangedEventArgs.cs
- FontCacheUtil.cs
- httpstaticobjectscollection.cs
- Point3DValueSerializer.cs
- ConfigPathUtility.cs
- MessagePropertyFilter.cs
- DataChangedEventManager.cs
- HtmlInputHidden.cs
- SoapObjectWriter.cs
- ProcessStartInfo.cs
- Thread.cs
- PenThreadPool.cs
- PeerService.cs
- AssemblyResourceLoader.cs
- XmlNodeWriter.cs
- Marshal.cs
- RSACryptoServiceProvider.cs
- TableLayoutPanelCellPosition.cs
- CommandEventArgs.cs
- PolyBezierSegmentFigureLogic.cs
- AccessDataSourceDesigner.cs
- TextTreeTextElementNode.cs
- HtmlTernaryTree.cs
- ApplicationServicesHostFactory.cs
- ISO2022Encoding.cs
- Menu.cs
- LoginView.cs
- ImageUrlEditor.cs
- ClientFormsIdentity.cs
- StateDesigner.TransitionInfo.cs
- ReadWriteSpinLock.cs
- HierarchicalDataSourceDesigner.cs
- ErrorHandler.cs
- FormsAuthenticationModule.cs
- SqlClientFactory.cs
- OracleConnectionString.cs
- WindowsAuthenticationModule.cs
- XmlILOptimizerVisitor.cs
- EncryptedType.cs
- AddressAlreadyInUseException.cs
- Serializer.cs
- DataGridViewTextBoxCell.cs
- WsdlWriter.cs
- AssemblyResourceLoader.cs
- HttpDebugHandler.cs
- ConnectionStringsExpressionBuilder.cs
- AdapterUtil.cs
- InlinedAggregationOperatorEnumerator.cs
- DbConnectionPoolIdentity.cs
- localization.cs
- QuaternionRotation3D.cs
- SafeSecurityHandles.cs