WebChannelFactory.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Web / WebChannelFactory.cs / 1305376 / WebChannelFactory.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace System.ServiceModel.Web 
{
    using System.IO; 
    using System.Collections.Generic; 
    using System.ServiceModel;
    using System.ServiceModel.Activation; 
    using System.ServiceModel.Channels;
    using System.ServiceModel.Description;
    using System.Diagnostics.CodeAnalysis;
    using System.Configuration; 
    using System.Net;
    using System.Globalization; 
 
    public class WebChannelFactory : ChannelFactory
        where TChannel : class 
    {
        public WebChannelFactory()
            : base()
        { 
        }
 
        public WebChannelFactory(Binding binding) 
            : base(binding)
        { 
        }

        public WebChannelFactory(ServiceEndpoint endpoint) :
            base(endpoint) 
        {
        } 
 

        [SuppressMessage("Microsoft.Design", "CA1057:StringUriOverloadsCallSystemUriOverloads", Justification = "This is a configuration string and not a network location")] 
        public WebChannelFactory(string endpointConfigurationName)
            : base(endpointConfigurationName)
        {
        } 

        public WebChannelFactory(Type channelType) 
            : base(channelType) 
        {
        } 

        public WebChannelFactory(Uri remoteAddress)
            : this(GetDefaultBinding(remoteAddress), remoteAddress)
        { 
        }
 
        public WebChannelFactory(Binding binding, Uri remoteAddress) 
            : base(binding, (remoteAddress != null) ? new EndpointAddress(remoteAddress) : null)
        { 
        }

        public WebChannelFactory(string endpointConfigurationName, Uri remoteAddress)
            : base(endpointConfigurationName, (remoteAddress != null) ? new EndpointAddress(remoteAddress) : null) 
        {
        } 
 
        protected override void OnOpening()
        { 
            if (this.Endpoint == null)
            {
                return;
            } 

            // if the binding is missing, set up a default binding 
            if (this.Endpoint.Binding == null && this.Endpoint.Address != null) 
            {
                this.Endpoint.Binding = GetDefaultBinding(this.Endpoint.Address.Uri); 
            }
            WebServiceHost.SetRawContentTypeMapperIfNecessary(this.Endpoint, false);
            if (this.Endpoint.Behaviors.Find() == null)
            { 
                this.Endpoint.Behaviors.Add(new WebHttpBehavior());
            } 
            base.OnOpening(); 
        }
 
        static Binding GetDefaultBinding(Uri remoteAddress)
        {
            if (remoteAddress == null || (remoteAddress.Scheme != Uri.UriSchemeHttp && remoteAddress.Scheme != Uri.UriSchemeHttps))
            { 
                return null;
            } 
            if (remoteAddress.Scheme == Uri.UriSchemeHttp) 
            {
                return new WebHttpBinding(); 
            }
            else
            {
                WebHttpBinding result = new WebHttpBinding(); 
                result.Security.Mode = WebHttpSecurityMode.Transport;
                result.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
                return result; 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK