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
- ResourcePermissionBaseEntry.cs
- WebServiceErrorEvent.cs
- MsmqIntegrationBindingElement.cs
- HandledEventArgs.cs
- LightweightCodeGenerator.cs
- BasePropertyDescriptor.cs
- ReturnEventArgs.cs
- SiteMapNodeItem.cs
- WmiEventSink.cs
- ByteStorage.cs
- StatusBarItem.cs
- ParseHttpDate.cs
- FramingFormat.cs
- ContentFileHelper.cs
- MarshalByValueComponent.cs
- ComAdminInterfaces.cs
- BindingListCollectionView.cs
- Expressions.cs
- RelationshipDetailsCollection.cs
- AmbientProperties.cs
- GridViewCellAutomationPeer.cs
- NativeMethodsOther.cs
- PersonalizableAttribute.cs
- CalendarDateRange.cs
- UriExt.cs
- SiteMapNode.cs
- XmlLanguage.cs
- TransportationConfigurationTypeInstallComponent.cs
- SplineQuaternionKeyFrame.cs
- OleDbReferenceCollection.cs
- QuaternionValueSerializer.cs
- XNodeNavigator.cs
- EntityCollectionChangedParams.cs
- HighContrastHelper.cs
- Interfaces.cs
- ResolveDuplexAsyncResult.cs
- ConfigurationFileMap.cs
- AmbiguousMatchException.cs
- DataGridView.cs
- TreeNodeBinding.cs
- EntityContainerAssociationSet.cs
- ListenerConnectionModeReader.cs
- CssStyleCollection.cs
- TouchDevice.cs
- HtmlEmptyTagControlBuilder.cs
- QilList.cs
- TextSegment.cs
- MailWebEventProvider.cs
- SafeNativeMethodsOther.cs
- CodeDomSerializerException.cs
- TraceLevelStore.cs
- BrushConverter.cs
- FontUnit.cs
- ImageIndexConverter.cs
- ExtendedPropertyCollection.cs
- DataViewListener.cs
- CheckBox.cs
- CharKeyFrameCollection.cs
- PageThemeBuildProvider.cs
- SqlDuplicator.cs
- httpserverutility.cs
- StreamInfo.cs
- ObjectListCommandCollection.cs
- TrustManager.cs
- FontFamilyIdentifier.cs
- InputLangChangeEvent.cs
- ChannelServices.cs
- StagingAreaInputItem.cs
- DeflateStream.cs
- DependencyPropertyHelper.cs
- NetStream.cs
- ActivitySurrogateSelector.cs
- DelayLoadType.cs
- NumberFunctions.cs
- Track.cs
- OrderByBuilder.cs
- IPAddressCollection.cs
- WizardPanelChangingEventArgs.cs
- Util.cs
- MembershipSection.cs
- AstTree.cs
- StreamMarshaler.cs
- EntityDataSourceReferenceGroup.cs
- MachineSettingsSection.cs
- SudsCommon.cs
- ObjectContextServiceProvider.cs
- Rotation3D.cs
- _DigestClient.cs
- QilReplaceVisitor.cs
- util.cs
- PeerCustomResolverSettings.cs
- FixedTextContainer.cs
- DiagnosticsConfiguration.cs
- TreeNode.cs
- ManifestResourceInfo.cs
- CharacterMetricsDictionary.cs
- ContextBase.cs
- TryCatchDesigner.xaml.cs
- EditorPartCollection.cs
- VersionPair.cs