WCF(Windows Communication Foundation) - 宿主(Hosting):WCF服务可以宿主在IIS, Application, WAS, WindowsService。本文以宿主在WindowsService为例。

 

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)


作者:​​webabcd​



介绍

WCF(Windows Communication Foundation) - 宿主(Hosting):WCF服务可以宿主在IIS, Application, WAS, WindowsService。本文以宿主在WindowsService为例。



示例

1、服务

IHello.cs

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Collections.Generic;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Linq;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Text;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.ServiceModel;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案namespace WCF.ServiceLib.Sample

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_构造函数_09化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_10化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    /// IHello接口

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    [ServiceContract]

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    public interface IHello

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 打招呼方法

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// <param name="name">人名</param>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// <returns></returns>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        [OperationContract]

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        string SayHello(string name);

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_30}

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

Hello.cs

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Collections.Generic;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Linq;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Text;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.ServiceModel;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案namespace WCF.ServiceLib.Sample

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_构造函数_09化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_10化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    /// Hello类

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    public class Hello : IHello

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 打招呼方法

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// <param name="name">人名</param>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// <returns></returns>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        public string SayHello(string name)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            return "Hello: " + name;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_30}

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案


2、宿主

Hello.cs(WindowsService)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Collections.Generic;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Linq;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Text;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.ComponentModel;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Configuration;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Configuration.Install;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.ServiceModel;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.ServiceProcess;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案namespace WCF.ServiceHostByWindowsService.Sample

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_构造函数_09化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_10化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    /// 初始化 System.Configuration.Install.Installer 类的新实例。

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    [RunInstaller(true)]

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    public class ProjectInstaller : Installer

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        private ServiceProcessInstaller process;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        private ServiceInstaller service;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 构造函数

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        public ProjectInstaller()

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            process = new ServiceProcessInstaller();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            process.Account = ServiceAccount.LocalSystem;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            service = new ServiceInstaller();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            service.ServiceName = "WCF.ServiceHostByWindowsService";

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            service.Description = "WCF服务宿主在WindowsService[webabcd测试用]";

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            base.Installers.Add(process);

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            base.Installers.Add(service);

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    /// Windows服务类

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    public class WindowsService : ServiceBase

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        public ServiceHost serviceHost = null;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 主函数

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        public static void Main()

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            ServiceBase.Run(new WindowsService());

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 构造函数

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        public WindowsService()

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            base.ServiceName = "WCF.ServiceHostByWindowsService";

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 启动Windows服务

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// <param name="args">args</param>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        protected override void OnStart(string[] args)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            if (serviceHost != null)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13            化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14                serviceHost.Close();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15            }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            // 为WCF.ServiceLib.Sample.Hello创建ServiceHost

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost = new ServiceHost(typeof(WCF.ServiceLib.Sample.Hello));

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.Open();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12            ServiceHost的几个事件(顾名思义)#region ServiceHost的几个事件(顾名思义)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13            /**//*

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.Opening += 化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.Opened += 化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.Closing += 化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.Faulted += 化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            serviceHost.UnknownMessageReceived += 化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15             */

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15            #endregion

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        /**//// <summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        /// 停止Windows服务

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        /// </summary>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        protected override void OnStop()

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13        化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            if (serviceHost != null)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13            化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14                serviceHost.Close();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14                serviceHost = null;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15            }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15        }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_30}

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

App.config

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<?xml version="1.0" encoding="utf-8" ?>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<configuration>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案  <system.serviceModel>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <services>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <!--name - 提供服务的类名-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <!--behaviorConfiguration - 指定相关的行为配置-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <service name="WCF.ServiceLib.Sample.Hello" behaviorConfiguration="SampleBehavior">

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <!--address - 服务地址-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <!--binding - 通信方式-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <!--contract - 服务契约-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <endpoint address="" binding="wsHttpBinding" contract="WCF.ServiceLib.Sample.IHello" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <!--元数据交换的endpoint-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <!--注:address是mex,它会和host/baseAddresses节点中的baseAddress做拼接,即提供元数据交换的地址为:http://localhost:12345/Binding/mex-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <endpoint binding="mexHttpBinding" contract="IMetadataExchange" address="mex" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <host>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案          <baseAddresses>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <add baseAddress="http://localhost:11233/ServiceHostByWindowsService/"/>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案          </baseAddresses>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        </host>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      </service>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    </services>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <behaviors>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <serviceBehaviors>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <behavior name="SampleBehavior">

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案          <serviceMetadata httpGetEnabled="True"/>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案          <serviceDebug includeExceptionDetailInFaults="False" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        </behavior>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      </serviceBehaviors>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    </behaviors>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案  </system.serviceModel>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案</configuration>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案


3、客户端

Hello.aspx

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_构造函数_09化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_10<%化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Hello.aspx.cs"

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_30    Inherits="Hosting_Hello" Title="宿主Hosting(服务宿主在WindowsService)" %>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案</asp:Content>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <div>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        <ul>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <li style="color: Red;">本例为宿主在WindowsService的示例</li>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <li>宿主在IIS请参见本解决方案的ServiceHost项目</li>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <li>宿主在应用程序请参见本解决方案的ServiceHost2项目</li>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <li>应用程序自宿主就是把本解决方案的ServiceLib项目和ServiceHost2项目结合在一起</li>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案            <li>宿主在Windows Activation Services(WAS),因为我没有环境,就先不写示例了</li>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案        </ul>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    </div>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <asp:TextBox ID="txtName" runat="server" Text="webabcd" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    &nbsp;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <asp:Button ID="btnSayHello" runat="server" Text="Hello" OnClick="btnSayHello_Click" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案</asp:Content>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

Hello.aspx.cs

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Collections;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Configuration;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Data;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Linq;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web.Security;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web.UI;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web.UI.HtmlControls;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web.UI.WebControls;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Web.UI.WebControls.WebParts;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案using System.Xml.Linq;

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案public partial class Hosting_Hello : System.Web.UI.Page

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_构造函数_09化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_10化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    protected void Page_Load(object sender, EventArgs e)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14    protected void btnSayHello_Click(object sender, EventArgs e)

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_12化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_13    化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_11{

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        var proxy = new HostingByWindowsService.HelloClient();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        Page.ClientScript.RegisterStartupScript(

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            this.GetType(),

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            "js",

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            string.Format("alert('{0}')", proxy.SayHello(txtName.Text)),

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14            true);

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_windows服务_14        proxy.Close();

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_xml_15    }

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_ide_30}

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案

Web.config

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<?xml version="1.0"?>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案<configuration>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案  <system.serviceModel>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    <client>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <!--address - 服务地址-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <!--binding - 通信方式-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <!--contract - 服务契约-->

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案      <endpoint address="http://localhost:11233/ServiceHostByWindowsService/" binding="wsHttpBinding" contract="Sample.IHello" />

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案    </client>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案  </system.serviceModel>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案</configuration>

化零为整WCF(5) - 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)_解决方案


运行结果:

启动"WCF.ServiceHostByWindowsService"服务,单击"Hello"按钮后弹出提示框,显示"Hello: webabcd"