zoukankan      html  css  js  c++  java
  • WCF注册Windows Service

    问题:

        在前面创建的WCF的HelloWorld程序,我们把WCF的服务寄宿到了Host这个控制台项目中了。现在你想将WCF的服务寄宿到Windows服务中。

    解决过程:

    1.  删除原来Host控制台项目,然后在solution上右键,新建一个WindowService项目。如下图:

    2. 对MyFirstWindowsService项目添加对Contracts项目、Service项目和System.ServiceModel的引用。
    3. 将MyFristWindowsService项目中的Class1.cs文件重命名为HelloHost.cs,然后打开这个文件,里面代码如下:
    4. HelloHost.cs
      复制代码
      namespace MyFirstWindowsService
      {
          partial class HelloHost : ServiceBase
          {
              private ServiceHost _host;
      
              public ServiceHost Host
              {
                  get { return _host; }
                  set { _host = value; }
              }
              public HelloHost()
              {
                  InitializeComponent();
              }
      
              protected override void OnStart(string[] args)
              {
                  // TODO: Add code here to start your service.
                  Host = new ServiceHost(typeof(HelloWorld));
                  Host.Open();
              }
      
              protected override void OnStop()
              {
                  // TODO: Add code here to perform any tear-down necessary to stop your service.
                  if (Host != null)
                  {
                      Host.Close();
                      Host = null;
                  }
              }
          }
      }    g
      复制代码
    5. HelloHost.cs[Design]的界面上右键,选择添加安装器(Add Installer)。这时,项目里会自动生成一个ProjectInstaller.cs文件。
    6. 打开ProjectInstaller.cs[Design]的设计界面,将会出现下图:

    7. 选中serviceInstaller1,打开它的属性视图(Ctrl W,P),修改属性。如下图所示:

    8. 接着选中serviceProcessInstaller1,打开它的属性视图,修改属性。如下图:(这里服务账号也可以是其他的。)

    9. 接下来我们看看这个项目里的program.cs文件。代码如下:
      Program.cs
      复制代码
      namespace MyFirstWindowsService
      {
          static class Program
          {
              /// <summary>
              /// The main entry point for the application.
              /// </summary>
              static void Main()
              {
                  ServiceBase[] ServicesToRun;
                  ServicesToRun = new ServiceBase[] 
                  { 
                       new HelloHost(),
                  };
                 ServiceBase.Run(ServicesToRun);
                  
              }
          }
      }
      复制代码
    10. 这些都做好了之后,在MyFirstWindowsService项目中添加服务端的配置文件。这个在上一节中也写过,代码如下:
      App.config
      复制代码
      <?xml version="1.0"?>
      <configuration>
          <system.serviceModel>
              <behaviors>
                  <serviceBehaviors>
                      <behavior name="HelloWorldBehavior">
                          <serviceMetadata httpGetEnabled="true" />
                      </behavior>
                  </serviceBehaviors>
              </behaviors>
              <services>
                  <service behaviorConfiguration="HelloWorldBehavior" name="Services.HelloWorld">
                      <endpoint address="Hello" binding="basicHttpBinding" name="Hello"
                          contract="Contracts.IHello" listenUriMode="Explicit" />
                      <endpoint address="mexHello" binding="mexHttpBinding" bindingConfiguration=""
                          name="mexHello" contract="IMetadataExchange" />
                      <host>
                          <baseAddresses>
                              <add baseAddress="http://localhost:8080/Service" />
                          </baseAddresses>
                      </host>
                  </service>
              </services>
          </system.serviceModel>
      <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
      
      </configuration>
      复制代码
    11. 现在我们的solution的目录是这个样子的:F6,Build。确保build success。

    12. 打开MyFirstWindowsService项目的bin/debug文件。在项目上右键,open folder in Windows explorer。debug文件夹中有如下文件:

    13. 将整个debug文件夹中文件拷出来,放到另外一个目录下。我这儿是放在C:\FirstService中。后面我们注册的windows服务将从这个目录下找exe文件。
    14. 下面就是要注册了。我们用InstallUtil.exe来注册(当然你也可以用sc)。打开InstallUtil.exe在我的电脑的目录是:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319。你可以从命令行进如这个目录,然后执行InstallUtil命令。也可以在所有程序中找到visual studio Tools,里面的visual studio command prompt命令行工具。执行安装的命令是InstallUtil C:\FirstService\MyFirstWindowsService.exe

    15. 成功后,你就可以在控制面板-》管理工具-》服务中找到它了。
  • 相关阅读:
    string数组批量转换成Int数组
    TCP/IP 、 HTTP 、HTTPS
    静态布局、自适应布局、流式布局、响应式布局、弹性布局等的概念和区别
    Vue源码学习02 初始化模块init.js
    IOS8白屏
    VUE 源码学习01 源码入口
    http状态码
    vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
    Vue实战Vue-cli项目构建(Vue+webpack系列之一)
    module.exports,exports,export和export default,import与require区别与联系【原创】
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2669664.html
Copyright © 2011-2022 走看看