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
- HwndAppCommandInputProvider.cs
- WindowsFormsLinkLabel.cs
- StylusLogic.cs
- ObjectContext.cs
- GradientStopCollection.cs
- UnsafeNativeMethods.cs
- InternalPolicyElement.cs
- ScrollContentPresenter.cs
- DriveInfo.cs
- XmlSchemaAnnotation.cs
- ExpressionVisitor.cs
- ProviderCollection.cs
- InputScope.cs
- MetadataArtifactLoaderResource.cs
- AttributedMetaModel.cs
- FixedSOMSemanticBox.cs
- QilGenerator.cs
- _AuthenticationState.cs
- WebPartsSection.cs
- DbModificationCommandTree.cs
- XmlComment.cs
- SeparatorAutomationPeer.cs
- LinqDataSource.cs
- TextUtf8RawTextWriter.cs
- TargetException.cs
- Model3DGroup.cs
- StateItem.cs
- StrokeFIndices.cs
- Margins.cs
- SpotLight.cs
- MembershipUser.cs
- Lasso.cs
- ViewBase.cs
- DiscreteKeyFrames.cs
- CmsInterop.cs
- MappableObjectManager.cs
- UriTemplateVariableQueryValue.cs
- RepeatBehavior.cs
- TypeConverterHelper.cs
- SHA512Managed.cs
- AssemblyCache.cs
- BitStream.cs
- CssClassPropertyAttribute.cs
- SecureUICommand.cs
- CachedRequestParams.cs
- TimeSpanMinutesConverter.cs
- TableLayoutCellPaintEventArgs.cs
- AppearanceEditorPart.cs
- TextSearch.cs
- NotifyIcon.cs
- TextSchema.cs
- MergePropertyDescriptor.cs
- MultipartIdentifier.cs
- EntityException.cs
- QuerySettings.cs
- InputScopeNameConverter.cs
- QilExpression.cs
- Rectangle.cs
- DataSysAttribute.cs
- ContextBase.cs
- GroupBox.cs
- MemoryStream.cs
- PropertyRecord.cs
- NotFiniteNumberException.cs
- TemplateColumn.cs
- RenderData.cs
- EmbossBitmapEffect.cs
- RemotingSurrogateSelector.cs
- ModelPerspective.cs
- DispatcherExceptionFilterEventArgs.cs
- RadioButton.cs
- ColorComboBox.cs
- mansign.cs
- XmlSchemaExporter.cs
- Wildcard.cs
- SafeFindHandle.cs
- XamlStackWriter.cs
- GridViewDeleteEventArgs.cs
- SystemUdpStatistics.cs
- PagesSection.cs
- EdmSchemaError.cs
- LinkButton.cs
- UpDownEvent.cs
- RichTextBoxConstants.cs
- Literal.cs
- ClientRoleProvider.cs
- PrinterSettings.cs
- ListControlDesigner.cs
- RelationHandler.cs
- HttpRawResponse.cs
- ToolStrip.cs
- TraceFilter.cs
- CodeParameterDeclarationExpression.cs
- RequestQueue.cs
- MessageBox.cs
- ZipIOCentralDirectoryBlock.cs
- ProfilePropertyMetadata.cs
- TypeDependencyAttribute.cs
- MarkupCompiler.cs
- BaseServiceProvider.cs