美文网首页
用控制台启动一个wcf服务

用控制台启动一个wcf服务

作者: homehe | 来源:发表于2019-07-11 22:55 被阅读0次

快速阅读

如何用控制台启动一个wcf服务,已经wcf的配置和在类库中如何实现 。

wcf类库

用vs新建一个类库,引用system.ServiceModel

1562771065411

定义接口实现服务契约和操作契约

[ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string GetUserInfo();
    }

定义方法实现接口,定义服务行为

[ServiceBehavior]
    public class User:IUser
    {
        public string GetUserInfo()
        {
            return "username";
        }
    }

控制台启动服务

新建一控制台应用 。引用之前新建的wcf类库,同时在app.config配置wcf服务

<system.serviceModel>
    <services>
      <service name="hcbServiceB.User">
        <!--设置服务节点,服务的地址直接采用基地址,使用basicHttpBinding-->
        <endpoint address="" binding="basicHttpBinding" contract="hcbServiceB.IUser">
        </endpoint>
<!--        ~1~设置元数据交换节点@1@-->
<!--        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">-->
<!--        </endpoint>-->
        <host>
          <baseAddresses>
            <!--服务的基地址用来访问获取元数据-->
            <add baseAddress="http://localhost:8057/User"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="HttpGetEnable">
          <!--公开元数据,正是部署时候应该去掉防止元数据泄露-->
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="NoneSecurity">
          <!--取消安全验证-->
          <security mode="None">
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>

启动服务

定义serviceHost, 能过wcf类找到servicehost ,然后启动。

static void Main(string[] args)
{
    ServiceHost serivceHost = null;
    Type ServiceType = typeof(IUser);
    Type[] types = typeof(IUser).Assembly.GetTypes();
    foreach (Type type in types)
    {
        if (type.IsInterface || type.IsEnum || type.IsAbstract || type.IsArray ||
            !ServiceType.IsAssignableFrom(type))
            continue;

        serivceHost = new ServiceHost(type);
        serivceHost.Opened += delegate
        {
            Console.WriteLine("[Info]{0} 启动完毕... ", type);
        };
        serivceHost.Faulted += delegate { Console.WriteLine("[Warning]{0} 启动出错!", type); };
        serivceHost.Open();

    }
    Console.ReadLine();
}

测试结果

1562771488867 1562771510995

参考:

wcf元数据相关:https://www.cnblogs.com/xfrog/archive/2010/05/16/1736771.html

友情提示

​ 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。

image

相关文章

  • 用控制台启动一个wcf服务

    快速阅读 如何用控制台启动一个wcf服务,已经wcf的配置和在类库中如何实现 。 wcf类库 用vs新建一个类库,...

  • WCF简单例子+Asp.Net MVC调用+WinForm调用

    1.创建WCF服务项目: 阐述:WCF服务库与WCF服务应用程序的区别。 WCF服务库,可以认为是一个包含WCF服...

  • 微服务 10: Sentinel可视化功能 (文末有项目连接)

    1:下载Sentinel控制台 2:启动Sentinel控制台 3:GateWay服务引用Pom包 4:启动Gat...

  • MySQL 知识点小结

    利用控制台命令连接 MySQL 启动 MySQL 服务net start 查看已经启动的服务net start ...

  • Prometheus可视化展示

    控制台 接上文。当服务启动后,访问http://<服务器IP地址>:9090来验证服务是否已启动成功。此时的界面应...

  • 学习笔记

    安装 WINDOWS启动和关闭 mongod 启动服务器 关闭控制台 关闭服务器 命令行 mongo 连接本地服...

  • log 日志

    1.在服务中启动运行 配置:log4j.properties 原有的: 2.在控制台运行 参考资料:java项目用...

  • WCF服务支持http

    //-------------WCF服务端web.config配置如下:---------------- //--...

  • 创建 .NetCore 控制台程序并挂载到linux服务

    一、创建控制台服务 注意:这里的控制台程序必须要有宿主程序,不然挂载到linux服务后会出现无法启动的情况。 控制...

  • 04.Redis补充

    管理员 进入cmd命令行,进入Redi安装目录 控制台启动: 注册为系统服务: 卸载服务: 开启服务: 停止服务:

网友评论

      本文标题:用控制台启动一个wcf服务

      本文链接:https://www.haomeiwen.com/subject/udajkctx.html