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
- ServiceDebugElement.cs
- ISFClipboardData.cs
- DynamicMethod.cs
- SoapEnumAttribute.cs
- CookielessHelper.cs
- NotifyIcon.cs
- Figure.cs
- DbConnectionHelper.cs
- UserControl.cs
- NativeMethods.cs
- VarRemapper.cs
- CorrelationValidator.cs
- securitycriticaldataformultiplegetandset.cs
- EventManager.cs
- SafeNativeMethods.cs
- EntityContainerEmitter.cs
- SwitchAttribute.cs
- ComPlusDiagnosticTraceSchemas.cs
- DataControlImageButton.cs
- TransactionManager.cs
- Int32CollectionConverter.cs
- WindowsFormsHost.cs
- InputElement.cs
- DropDownList.cs
- RuntimeConfig.cs
- DecimalKeyFrameCollection.cs
- DataControlFieldCollection.cs
- DecimalKeyFrameCollection.cs
- BindValidationContext.cs
- CompoundFileIOPermission.cs
- ByteRangeDownloader.cs
- figurelength.cs
- HostExecutionContextManager.cs
- EntityReference.cs
- BooleanFacetDescriptionElement.cs
- DataGridItemCollection.cs
- EntityObject.cs
- SimpleType.cs
- ToolStripStatusLabel.cs
- ProfileServiceManager.cs
- TypeExtension.cs
- PropertyChangingEventArgs.cs
- LogFlushAsyncResult.cs
- SchemaImporter.cs
- Point.cs
- NetworkStream.cs
- AssemblyCollection.cs
- VectorValueSerializer.cs
- TraceData.cs
- DispatcherTimer.cs
- AuthStoreRoleProvider.cs
- EnvelopedSignatureTransform.cs
- CuspData.cs
- ImpersonateTokenRef.cs
- Facet.cs
- UidPropertyAttribute.cs
- peernodestatemanager.cs
- DetailsViewRow.cs
- CollectionChangeEventArgs.cs
- ScriptReference.cs
- safesecurityhelperavalon.cs
- ObjectConverter.cs
- JpegBitmapEncoder.cs
- PointLight.cs
- TTSEngineTypes.cs
- HtmlGenericControl.cs
- FileDialog.cs
- basecomparevalidator.cs
- SymbolEqualComparer.cs
- ProtectedProviderSettings.cs
- InstanceDescriptor.cs
- RangeValidator.cs
- BaseDataListDesigner.cs
- DelegatedStream.cs
- VectorAnimation.cs
- AsymmetricKeyExchangeFormatter.cs
- SiteMapDataSourceView.cs
- MarginsConverter.cs
- GlyphsSerializer.cs
- EndpointAddressProcessor.cs
- PageSetupDialog.cs
- SerializationSectionGroup.cs
- ToolStripProgressBar.cs
- WrappedIUnknown.cs
- DeleteMemberBinder.cs
- XsltSettings.cs
- PartialCachingAttribute.cs
- InputReferenceExpression.cs
- Win32Native.cs
- DataSourceHelper.cs
- XmlReflectionMember.cs
- ChangeProcessor.cs
- SafeRegistryHandle.cs
- OdbcStatementHandle.cs
- DBCSCodePageEncoding.cs
- MediaTimeline.cs
- EventlogProvider.cs
- HtmlUtf8RawTextWriter.cs
- QueryRewriter.cs
- RelationshipDetailsRow.cs