ServiceHostFactory.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Activation / ServiceHostFactory.cs / 1 / ServiceHostFactory.cs

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

namespace System.ServiceModel.Activation 
{
    using System.Reflection; 
    using System.Collections.ObjectModel; 

 	public class ServiceHostFactory : ServiceHostFactoryBase 
	{
        Collection referencedAssemblies = new Collection();

        internal void AddAssemblyReference(string assemblyName) 
        {
            this.referencedAssemblies.Add(assemblyName); 
        } 

        public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses) 
        {
            if (!ServiceHostingEnvironment.IsHosted)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.Hosting_ProcessNotExecutingUnderHostedContext, "ServiceHostFactory.CreateServiceHost"))); 
            }
 
            if (string.IsNullOrEmpty(constructorString)) 
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.Hosting_ServiceTypeNotProvided))); 
            }

            Type type = Type.GetType(constructorString, false);
 
            if (type == null)
            { 
                foreach (string assemblyName in this.referencedAssemblies) 
                {
                    Assembly assembly = Assembly.Load(assemblyName); 
                    type = assembly.GetType(constructorString, false);
                    if (type != null)
                        break;
                } 
            }
 
            if (type == null) 
            {
                Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); 
                for (int i = 0; i < assemblies.Length; i++)
                {
                    type = assemblies[i].GetType(constructorString, false);
                    if (type != null) 
                        break;
                } 
            } 

            if (type == null) 
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.Hosting_ServiceTypeNotResolved, constructorString)));
            }
 
            return CreateServiceHost(type, baseAddresses);
        } 
 
        protected virtual ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        { 
            return new ServiceHost(serviceType, baseAddresses);
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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