wcf服务库 在 asp.net iis5 和 windows服务中的托管 ,最简单快速的方法

来源:互联网 发布:淘宝辅助软件有哪些 编辑:程序博客网 时间:2024/05/19 04:53

环境 windowsxp  vs2008 ,

 

第一

 

打开 vs2008 ,新建一个 wcf服务库 项目 ,vs 会自动生成一个类,用于测试。

wcf服务库建立完成

 

第二

 

在解决方案中添加 新建 windows服务 项目,

 

在“设计”窗口中点右键 单击添加安装程序

这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。

单击 ServiceInstaller 组件并将 StartType 属性设置为Automatic   

将serviceProcessInstaller类的Account属性改为 LocalSystem

 

然后添加4个引用

system.configuration

system.configuration.install

system.runtime.serialization

system.servicemodel

 

再把第一步建立的wcf服务库项目引用进来,

在 Service1.cs 中  添加代码 结果如下

 

   public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
        ServiceHost s;
        protected override void OnStart(string[] args)
        {
            s = new ServiceHost(typeof(WcfServiceLibrary1.Service1));
            s.Open();
        }

        protected override void OnStop()
        {
            s.Close();
        }
    }

 

  编译,不报错,

最后一步  把 wcf服务库项目 bin 文件夹 中的 config 文件 拷贝到 windows服务项目的bin 文件夹中并改名为 exe文件名+.config

例如 我的 windows服务项目 bin 中的exe文件名为 WindowsService1.exe,那么 config 文件名为 windowsService1.exe.config

 

测试  先安装windows服务 在 vs2008 命令行工具中 执行“installutil windowsService1.exe  ”,安装成功后 ,在“管理工具-服务”中 启动 该服务, 再打开 config 文件 将 基址 url 复制 到 IE 中,看到说明 成功

 

到此  wcf服务库 在 windows服务中的托管 完成

 

 

第三

在解决方案中添加 新建 asp.net应用程序 项目,

把第一步建立的wcf服务库项目引用进来

复制wcf服务库项目 中app.config 配置信息

 

 主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior"
        name="WcfServiceLibrary1.Service1">
        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary1.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfServiceLibrary1.Service1Behavior">
          <!-- 为避免泄漏元数据信息,
          请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- 要接收故障异常详细信息以进行调试,
          请将下值设置为 true。在部署前
            设置为 false 以避免泄漏异常信息-->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

 

可以将  <baseAddresses> 节点 删掉 无用, 还可以将 wsHttpBinding 改为 basicHttpBinding ,和 webservice 兼容

 

复制到 web.config 的 <configuration> 节点中,

然后 在 asp.net 项目 中添加 文本文件 文件名随便起,后缀必须为 svc 例如 s1.svc

在文件中添加 

<%@ServiceHost language=c# Debug="true" Service="WcfServiceLibrary1.Service1"%>

 

注意:Service 后面 内容 要和 config 中 service 节点 name 一致 ,否则 找不到 服务,

测试 在ie 中 http://localhost:1055/s1.svc   看到说明 成功

 

到此  wcf服务库 在 asp.net iis 中的托管 完成

 

 

完整项目文件下载:  http://download.csdn.net/source/1680096

原创粉丝点击