< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.HttpTransportBindingElement
Assembly: CoreWCF.Http
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Http/src/CoreWCF/Channels/HttpTransportBindingElement.cs
Line coverage
64%
Covered lines: 101
Uncovered lines: 56
Coverable lines: 157
Total lines: 526
Line coverage: 64.3%
Branch coverage
50%
Covered branches: 45
Total branches: 90
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Http/src/CoreWCF/Channels/HttpTransportBindingElement.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.Collections.Generic;
 6using System.Net;
 7using System.Security.Authentication.ExtendedProtection;
 8using System.Xml;
 9using CoreWCF.Configuration;
 10using CoreWCF.Description;
 11using Microsoft.AspNetCore.Builder;
 12using WsdlNS = System.Web.Services.Description;
 13
 14namespace CoreWCF.Channels
 15{
 16    /// <summary>
 17    /// This TransportBindingElement is used to specify an HTTP transport for transmitting messages.
 18    /// </summary>
 19    /// <remarks>HttpTransportBindingElement is also used as a starting point for creating a custom bindings using HTTP.
 20    public class HttpTransportBindingElement : TransportBindingElement, IWsdlExportExtension, IPolicyExportExtension
 21    {
 22        private int _maxBufferSize;
 23        private bool _maxBufferSizeInitialized;
 24        private string _realm;
 25        private TransferMode _transferMode;
 26        private WebSocketTransportSettings _webSocketSettings;
 27        private ExtendedProtectionPolicy _extendedProtectionPolicy;
 28
 29        //HttpAnonymousUriPrefixMatcher _anonymousUriPrefixMatcher;
 30
 31        /// <summary>
 32        /// Initializes a new instance of the HttpTransportBindingElement class.
 33        /// </summary>
 34        /// <remarks>The defaults are AuthenticationSchemes.Anonymous, TransferMode.Buffered, MaxBufferSize = 65536, and
 87435        public HttpTransportBindingElement()
 36        {
 87437            AuthenticationScheme = HttpTransportDefaults.AuthenticationScheme;
 87438            _maxBufferSize = TransportDefaults.MaxBufferSize;
 87439            KeepAliveEnabled = HttpTransportDefaults.KeepAliveEnabled;
 87440            TransferMode = HttpTransportDefaults.TransferMode;
 87441            WebSocketSettings = HttpTransportDefaults.GetDefaultWebSocketTransportSettings();
 87442        }
 43
 834544        protected HttpTransportBindingElement(HttpTransportBindingElement elementToBeCloned) : base(elementToBeCloned)
 45        {
 834546            AuthenticationScheme = elementToBeCloned.AuthenticationScheme;
 834547            _maxBufferSize = elementToBeCloned._maxBufferSize;
 834548            _maxBufferSizeInitialized = elementToBeCloned._maxBufferSizeInitialized;
 834549            KeepAliveEnabled = elementToBeCloned.KeepAliveEnabled;
 834550            TransferMode = elementToBeCloned.TransferMode;
 834551            WebSocketSettings = elementToBeCloned.WebSocketSettings.Clone();
 834552            AlwaysUseAuthorizationPolicySupport = elementToBeCloned.AlwaysUseAuthorizationPolicySupport;
 834553        }
 54
 55        // public bool AllowCookies { get { return default(bool); } set { } }
 56
 57        /// <summary>
 58        /// Gets or sets the authentication scheme.
 59        /// </summary>
 60        /// <value>The authentication scheme.</value>
 2401761        public AuthenticationSchemes AuthenticationScheme { get; set; }
 62
 63        /// <summary>
 64        /// Gets or sets the ASP.NET Core Authorization policy support
 65        /// </summary>
 66        /// <value>A value of true always uses it, a value of false means it might be used if implicitly turned on (Inhe
 2309767        public bool AlwaysUseAuthorizationPolicySupport { get; set; }
 68
 69        // public System.Net.AuthenticationSchemes AuthenticationScheme { get { return default(System.Net.Authentication
 70
 71        /// <summary>
 72        /// Gets or sets the maximum size of the buffer.
 73        /// </summary>
 74        /// <value>The maximum size of the buffer.</value>
 75        /// <exception cref="ArgumentOutOfRangeException">The value is less than or equal to 0.</exception>
 76        /// <remarks>If not set, this defaults the to lessor of MaxReceivedMessageSize and Int32.MaxValue.</remarks>
 77        public int MaxBufferSize
 78        {
 79            get
 80            {
 86081                if (_maxBufferSizeInitialized || TransferMode != TransferMode.Buffered)
 82                {
 4283                    return _maxBufferSize;
 84                }
 85
 81886                long maxReceivedMessageSize = MaxReceivedMessageSize;
 81887                if (maxReceivedMessageSize > int.MaxValue)
 88                {
 089                    return int.MaxValue;
 90                }
 91                else
 92                {
 81893                    return (int)maxReceivedMessageSize;
 94                }
 95            }
 96            set
 97            {
 3498                if (value <= 0)
 99                {
 0100                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(val
 0101                        SRCommon.ValueMustBePositive));
 102                }
 103
 34104                _maxBufferSizeInitialized = true;
 34105                _maxBufferSize = value;
 34106            }
 107        }
 108
 17991109        public bool KeepAliveEnabled { get; set; }
 110
 111        public string Realm
 112        {
 113            get
 114            {
 0115                return _realm;
 116            }
 117            set
 118            {
 5984119                _realm = value ?? throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value));
 5984120            }
 121        }
 122
 123        /// <summary>
 124        /// Gets the HTTP scheme.
 125        /// </summary>
 126        /// <value>The HTTP scheme.</value>
 127        /// <remarks>This will be 'http' unless overridden in a subclass.</remarks>
 2496128        public override string Scheme => "http";
 129
 130        /// <summary>
 131        /// Gets or sets the transfer mode.
 132        /// </summary>
 133        /// <value>The transfer mode.</value>
 134        public TransferMode TransferMode
 135        {
 136            get
 137            {
 9620138                return _transferMode;
 139            }
 140            set
 141            {
 9274142                TransferModeHelper.Validate(value);
 9274143                _transferMode = value;
 9274144            }
 145        }
 146
 147        /// <summary>
 148        /// Gets or sets the web socket settings.
 149        /// </summary>
 150        /// <value>The web socket settings. This may not be null.</value>
 151        public WebSocketTransportSettings WebSocketSettings
 152        {
 153            get
 154            {
 10983155                return _webSocketSettings;
 156            }
 157            set
 158            {
 9561159                _webSocketSettings = value ?? throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(va
 9561160            }
 161        }
 162
 163        internal virtual bool GetSupportsClientAuthenticationImpl(AuthenticationSchemes effectiveAuthenticationSchemes)
 164        {
 0165            return effectiveAuthenticationSchemes != AuthenticationSchemes.None &&
 0166                effectiveAuthenticationSchemes.IsNotSet(AuthenticationSchemes.Anonymous);
 167        }
 168
 169        internal virtual bool GetSupportsClientWindowsIdentityImpl(AuthenticationSchemes effectiveAuthenticationSchemes)
 170        {
 0171            return effectiveAuthenticationSchemes != AuthenticationSchemes.None &&
 0172                effectiveAuthenticationSchemes.IsNotSet(AuthenticationSchemes.Anonymous);
 173        }
 174
 175        internal string GetWsdlTransportUri(bool useWebSocketTransport)
 176        {
 31177            if (useWebSocketTransport)
 178            {
 0179                return TransportPolicyConstants.WebSocketTransportUri;
 180            }
 181
 31182            return TransportPolicyConstants.HttpTransportUri;
 183        }
 184
 185        /// <summary>
 186        /// Clones this instance.
 187        /// </summary>
 188        public override BindingElement Clone()
 189        {
 6894190            return new HttpTransportBindingElement(this);
 191        }
 192
 193        public override IServiceDispatcher BuildServiceDispatcher<TChannel>(BindingContext context, IServiceDispatcher i
 194        {
 435195            IApplicationBuilder app = context.BindingParameters.Find<IApplicationBuilder>();
 435196            if (app == null)
 197            {
 0198                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(nameof(IApplicationBuilder));
 199            }
 200
 201            // Wire up inner dispatcher to ServiceModelHttpMiddleware so that incoming requests get dispatched
 202            //ServiceModelHttpMiddleware.ConfigureDispatcher(app, innerDispatcher);
 203            // Return the previous inner dispatcher as we don't create a wrapping dispatcher here.
 435204            return innerDispatcher;
 205        }
 206
 207        public override bool CanBuildServiceDispatcher<TChannel>(BindingContext context)
 208        {
 1722209            if (typeof(TChannel) == typeof(IReplyChannel))
 210            {
 451211                return WebSocketSettings.TransportUsage != WebSocketTransportUsage.Always;
 212            }
 1271213            else if (typeof(TChannel) == typeof(IDuplexSessionChannel))
 214            {
 423215                return WebSocketSettings.TransportUsage != WebSocketTransportUsage.Never;
 216            }
 217
 848218            return false;
 219        }
 220
 221        public override T GetProperty<T>(BindingContext context)
 222        {
 1244223            if (context == null)
 224            {
 0225                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(context));
 226            }
 227
 1244228            if (typeof(T) == typeof(ITransportServiceBuilder))
 229            {
 434230                return (T)(object)new HttpTransportServiceBuilder();
 231            }
 232
 810233            if (typeof(T) == typeof(IAuthorizationCapabilities))
 234            {
 424235                var binding = context.BindingParameters.Find<Binding>();
 424236                if (binding is not null)
 237                {
 424238                    context.BindingParameters.Remove(binding);
 424239                    return (T)(object)new AuthorizationCapabilities(AlwaysUseAuthorizationPolicySupport);
 240                }
 241
 0242                return null;
 243            }
 244
 245            //else if (typeof(T) == typeof(ISecurityCapabilities))
 246            //{
 247            //    AuthenticationSchemes effectiveAuthenticationSchemes = HttpTransportBindingElement.GetEffectiveAuthent
 248            //        context.BindingParameters);
 249
 250            //    return (T)(object)new SecurityCapabilities(this.GetSupportsClientAuthenticationImpl(effectiveAuthentic
 251            //        effectiveAuthenticationSchemes == AuthenticationSchemes.Negotiate,
 252            //        this.GetSupportsClientWindowsIdentityImpl(effectiveAuthenticationSchemes),
 253            //        ProtectionLevel.None,
 254            //        ProtectionLevel.None);
 255            //}
 256            //else if (typeof(T) == typeof(IBindingDeliveryCapabilities))
 257            //{
 258            //    return (T)(object)new BindingDeliveryCapabilitiesHelper();
 259            //}
 386260            else if (typeof(T) == typeof(TransferMode))
 261            {
 0262                return (T)(object)TransferMode;
 263            }
 264            //else if (typeof(T) == typeof(ExtendedProtectionPolicy))
 265            //{
 266            //    return (T)(object)this.ExtendedProtectionPolicy;
 267            //}
 268            //else if (typeof(T) == typeof(IAnonymousUriPrefixMatcher))
 269            //{
 270            //    if (_anonymousUriPrefixMatcher == null)
 271            //    {
 272            //        _anonymousUriPrefixMatcher = new HttpAnonymousUriPrefixMatcher();
 273            //    }
 274
 275            //    return (T)(object)_anonymousUriPrefixMatcher;
 276            //}
 386277            else if (typeof(T).FullName.Equals("CoreWCF.Channels.ITransportCompressionSupport"))
 278            {
 2279                IApplicationBuilder app = context.BindingParameters.Find<IApplicationBuilder>();
 2280                if (app == null)
 281                {
 0282                    return base.GetProperty<T>(context);
 283                }
 284
 2285                object tcs = app.ApplicationServices.GetService(typeof(T).Assembly.GetType("CoreWCF.Channels.TransportCo
 2286                return (T)tcs;
 287            }
 288            else
 289            {
 384290                if (context.BindingParameters.Find<MessageEncodingBindingElement>() == null)
 291                {
 384292                    context.BindingParameters.Add(new TextMessageEncodingBindingElement());
 293                }
 384294                return base.GetProperty<T>(context);
 295            }
 296        }
 297
 298        internal static AuthenticationSchemes GetEffectiveAuthenticationSchemes(AuthenticationSchemes currentAuthenticat
 299        {
 40300            if (bindingParameters == null)
 301            {
 9302                return currentAuthenticationSchemes;
 303            }
 304
 31305            if (!AuthenticationSchemesBindingParameter.TryExtract(bindingParameters, out AuthenticationSchemes hostSuppo
 306            {
 31307                return currentAuthenticationSchemes;
 308            }
 309
 310            // TODO: Add logic for Metadata endpoints to inherit authentication scheme of host. This might not be necess
 311            //if (currentAuthenticationSchemes == AuthenticationSchemes.None ||
 312            //    (AspNetEnvironment.Current.IsMetadataListener(bindingParameters) &&
 313            //    currentAuthenticationSchemes == AuthenticationSchemes.Anonymous &&
 314            //    hostSupportedAuthenticationSchemes.IsNotSet(AuthenticationSchemes.Anonymous)))
 315            //{
 316            //    //Inherit authentication schemes from host.
 317            //    //This logic of inheriting from the host for anonymous MEX endpoints was previously implemented in Hos
 318            //    //We moved it here to maintain the pre-multi-auth behavior. (see CSDMain 183553)
 319
 320            //    if (!hostSupportedAuthenticationSchemes.IsSingleton() &&
 321            //         hostSupportedAuthenticationSchemes.IsSet(AuthenticationSchemes.Anonymous) &&
 322            //         AspNetEnvironment.Current.AspNetCompatibilityEnabled &&
 323            //         AspNetEnvironment.Current.IsSimpleApplicationHost &&
 324            //         AspNetEnvironment.Current.IsWindowsAuthenticationConfigured())
 325            //    {
 326            //        // Remove Anonymous if ASP.Net authentication mode is Windows (Asp.Net would not allow anonymous r
 327            //        hostSupportedAuthenticationSchemes ^= AuthenticationSchemes.Anonymous;
 328            //    }
 329
 330            //    return hostSupportedAuthenticationSchemes;
 331            //}
 332            //else
 333            //{
 334            //build intersection between AuthenticationSchemes supported on the HttpTransportbidningELement and ServiceH
 0335            return currentAuthenticationSchemes & hostSupportedAuthenticationSchemes;
 336            //}
 337        }
 338
 339        public ExtendedProtectionPolicy ExtendedProtectionPolicy
 340        {
 341            get
 342            {
 0343                return _extendedProtectionPolicy;
 344            }
 345            set
 346            {
 1823347                if (value == null)
 348                {
 0349                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(value));
 350                }
 351
 1823352                if (value.PolicyEnforcement == PolicyEnforcement.Always &&
 1823353                    !ExtendedProtectionPolicy.OSSupportsExtendedProtection)
 354                {
 0355                    throw new PlatformNotSupportedException(SR.ExtendedProtectionNotSupported);
 356                }
 357
 1823358                _extendedProtectionPolicy = value;
 1823359            }
 360        }
 361
 362        void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context)
 363        {
 40364            if (exporter == null)
 365            {
 0366                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(exporter));
 367            }
 368
 40369            if (context == null)
 370            {
 0371                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(context));
 372            }
 373
 40374            OnExportPolicy(exporter, context);
 375
 376            bool createdNew;
 40377            MessageEncodingBindingElement encodingBindingElement = FindMessageEncodingBindingElement(context.BindingElem
 40378            if (createdNew && encodingBindingElement is IPolicyExportExtension)
 379            {
 0380                ((IPolicyExportExtension)encodingBindingElement).ExportPolicy(exporter, context);
 381            }
 382
 40383            WsdlExporter.AddWSAddressingAssertion(exporter, context, encodingBindingElement.MessageVersion.Addressing);
 40384        }
 385
 386        internal virtual void OnExportPolicy(MetadataExporter exporter, PolicyConversionContext policyContext)
 387        {
 40388            List<string> assertionNames = new List<string>();
 40389            AuthenticationSchemes effectiveAuthenticationSchemes = HttpTransportBindingElement.GetEffectiveAuthenticatio
 40390                    policyContext.BindingParameters);
 391
 40392            if (effectiveAuthenticationSchemes != AuthenticationSchemes.None && !(effectiveAuthenticationSchemes.IsSet(A
 393            {
 394                // ATTENTION: The order of the if-statements below is essential! When importing WSDL svcutil is actually
 395                // using the first assertion - and the HTTP spec requires clients to use the most secure authentication
 396                // scheme supported by the client. (especially important for downlevel (3.5/4.0) clients
 0397                if (effectiveAuthenticationSchemes.IsSet(AuthenticationSchemes.Negotiate))
 398                {
 0399                    assertionNames.Add(TransportPolicyConstants.NegotiateHttpAuthenticationName);
 400                }
 401
 0402                if (effectiveAuthenticationSchemes.IsSet(AuthenticationSchemes.Ntlm))
 403                {
 0404                    assertionNames.Add(TransportPolicyConstants.NtlmHttpAuthenticationName);
 405                }
 406
 0407                if (effectiveAuthenticationSchemes.IsSet(AuthenticationSchemes.Digest))
 408                {
 0409                    assertionNames.Add(TransportPolicyConstants.DigestHttpAuthenticationName);
 410                }
 411
 0412                if (effectiveAuthenticationSchemes.IsSet(AuthenticationSchemes.Basic))
 413                {
 0414                    assertionNames.Add(TransportPolicyConstants.BasicHttpAuthenticationName);
 415                }
 416
 0417                if (assertionNames.Count > 0)
 418                {
 0419                    if (assertionNames.Count == 1)
 420                    {
 0421                        policyContext.GetBindingAssertions().Add(new XmlDocument().CreateElement(TransportPolicyConstant
 0422                            assertionNames[0], TransportPolicyConstants.HttpTransportNamespace));
 423                    }
 424                    else
 425                    {
 0426                        XmlDocument dummy = new XmlDocument();
 0427                        XmlElement root = dummy.CreateElement(MetadataStrings.WSPolicy.Prefix,
 0428                            MetadataStrings.WSPolicy.Elements.ExactlyOne,
 0429                            exporter.PolicyVersion.Namespace);
 430
 0431                        foreach (string assertionName in assertionNames)
 432                        {
 0433                            root.AppendChild(dummy.CreateElement(TransportPolicyConstants.HttpTransportPrefix,
 0434                                assertionName,
 0435                                TransportPolicyConstants.HttpTransportNamespace));
 436                        }
 437
 0438                        policyContext.GetBindingAssertions().Add(root);
 439                    }
 440                }
 441            }
 442
 40443            bool useWebSocketTransport = WebSocketHelper.UseWebSocketTransport(WebSocketSettings.TransportUsage, policyC
 40444            if (useWebSocketTransport && TransferMode != TransferMode.Buffered)
 445            {
 0446                policyContext.GetBindingAssertions().Add(new XmlDocument().CreateElement(TransportPolicyConstants.WebSoc
 0447                TransferMode.ToString(), TransportPolicyConstants.WebSocketPolicyNamespace));
 448            }
 40449        }
 450
 0451        void IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) { }
 452
 453        void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext endpointContext)
 454        {
 455            bool createdNew;
 31456            MessageEncodingBindingElement encodingBindingElement = FindMessageEncodingBindingElement(endpointContext, ou
 31457            bool useWebSocketTransport = WebSocketHelper.UseWebSocketTransport(WebSocketSettings.TransportUsage, endpoin
 458
 31459            EndpointAddress address = endpointContext.Endpoint.Address;
 31460            if (useWebSocketTransport)
 461            {
 0462                address = new EndpointAddress(WebSocketHelper.GetWebSocketUri(endpointContext.Endpoint.Address.Uri), end
 0463                WsdlNS.SoapAddressBinding binding = GetSoapAddressBinding(endpointContext.WsdlPort);
 0464                if (binding != null)
 465                {
 0466                    binding.Location = address.Uri.AbsoluteUri;
 467                }
 468            }
 469
 31470            ExportWsdlEndpoint(exporter, endpointContext, GetWsdlTransportUri(useWebSocketTransport), address, encodingB
 31471        }
 472
 473        private static WsdlNS.SoapAddressBinding GetSoapAddressBinding(WsdlNS.Port wsdlPort)
 474        {
 0475            foreach (object o in wsdlPort.Extensions)
 476            {
 0477                if (o is WsdlNS.SoapAddressBinding binding)
 478                {
 0479                    return binding;
 480                }
 481            }
 0482            return null;
 0483        }
 484
 485        private MessageEncodingBindingElement FindMessageEncodingBindingElement(BindingElementCollection bindingElements
 486        {
 71487            createdNew = false;
 71488            MessageEncodingBindingElement encodingBindingElement = bindingElements.Find<MessageEncodingBindingElement>()
 71489            if (encodingBindingElement == null)
 490            {
 0491                createdNew = true;
 0492                encodingBindingElement = new BinaryMessageEncodingBindingElement();
 493            }
 71494            return encodingBindingElement;
 495        }
 496
 497        private MessageEncodingBindingElement FindMessageEncodingBindingElement(WsdlEndpointConversionContext endpointCo
 498        {
 31499            BindingElementCollection bindingElements = endpointContext.Endpoint.Binding.CreateBindingElements();
 31500            return FindMessageEncodingBindingElement(bindingElements, out createdNew);
 501        }
 502    }
 503
 504    internal static class TransportPolicyConstants
 505    {
 506        public const string BasicHttpAuthenticationName = "BasicAuthentication";
 507        public const string CompositeDuplex = "CompositeDuplex";
 508        public const string CompositeDuplexNamespace = "http://schemas.microsoft.com/net/2006/06/duplex";
 509        public const string CompositeDuplexPrefix = "cdp";
 510        public const string DigestHttpAuthenticationName = "DigestAuthentication";
 511        public const string HttpTransportNamespace = "http://schemas.microsoft.com/ws/06/2004/policy/http";
 512        public const string HttpTransportPrefix = "http";
 513        public const string HttpTransportUri = "http://schemas.xmlsoap.org/soap/http";
 514        public const string NegotiateHttpAuthenticationName = "NegotiateAuthentication";
 515        public const string NtlmHttpAuthenticationName = "NtlmAuthentication";
 516        public const string ProtectionLevelName = "ProtectionLevel";
 517        public const string RequireClientCertificateName = "RequireClientCertificate";
 518        public const string SslTransportSecurityName = "SslTransportSecurity";
 519        public const string StreamedName = "Streamed";
 520        public const string WebSocketPolicyPrefix = "mswsp";
 521        public const string WebSocketPolicyNamespace = "http://schemas.microsoft.com/soap/websocket/policy";
 522        public const string WebSocketTransportUri = "http://schemas.microsoft.com/soap/websocket";
 523        public const string WebSocketEnabled = "WebSocketEnabled";
 524        public const string WindowsTransportSecurityName = "WindowsTransportSecurity";
 525    }
 526}

Methods/Properties

.ctor()
.ctor(CoreWCF.Channels.HttpTransportBindingElement)
AuthenticationScheme()
AlwaysUseAuthorizationPolicySupport()
MaxBufferSize()
MaxBufferSize(System.Int32)
KeepAliveEnabled()
Realm()
Realm(System.String)
Scheme()
TransferMode()
TransferMode(CoreWCF.TransferMode)
WebSocketSettings()
WebSocketSettings(CoreWCF.Channels.WebSocketTransportSettings)
GetSupportsClientAuthenticationImpl(System.Net.AuthenticationSchemes)
GetSupportsClientWindowsIdentityImpl(System.Net.AuthenticationSchemes)
GetWsdlTransportUri(System.Boolean)
Clone()
BuildServiceDispatcher(CoreWCF.Channels.BindingContext,CoreWCF.Configuration.IServiceDispatcher)
CanBuildServiceDispatcher(CoreWCF.Channels.BindingContext)
GetProperty(CoreWCF.Channels.BindingContext)
GetEffectiveAuthenticationSchemes(System.Net.AuthenticationSchemes,CoreWCF.Channels.BindingParameterCollection)
ExtendedProtectionPolicy()
ExtendedProtectionPolicy(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy)
CoreWCF.Description.IPolicyExportExtension.ExportPolicy(CoreWCF.Description.MetadataExporter,CoreWCF.Description.PolicyConversionContext)
OnExportPolicy(CoreWCF.Description.MetadataExporter,CoreWCF.Description.PolicyConversionContext)
CoreWCF.Description.IWsdlExportExtension.ExportContract(CoreWCF.Description.WsdlExporter,CoreWCF.Description.WsdlContractConversionContext)
CoreWCF.Description.IWsdlExportExtension.ExportEndpoint(CoreWCF.Description.WsdlExporter,CoreWCF.Description.WsdlEndpointConversionContext)
GetSoapAddressBinding(System.Web.Services.Description.Port)
FindMessageEncodingBindingElement(CoreWCF.Channels.BindingElementCollection,System.Boolean&)
FindMessageEncodingBindingElement(CoreWCF.Description.WsdlEndpointConversionContext,System.Boolean&)