惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - 水木

为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。 关于hexo与github使用过程中的问题与笔记 - 水木 - 博客园 IIS错误代码500.21 ,Nhibernate更新报错,委托的使用。action传参数 mysql 使用的三个小技巧 利用反向代理服务器,加快国内对国外主机的访问 - 水木 2019年七月第三周总结 ManualResetEven使用的最清楚说明 如何画数据流图 如何画好ER图 UML图中时序图的基本用法 系统架构设计上需要注意的 weblogic介绍 - 水木 - 博客园 Tuxedo 介绍 winform如何不卡界面 银行基金代销系统调研 如何在wcf中用net tcp协议进行通讯 wcf必知必会以及与Webapi的区别 - 水木 2019年7月第一周总结-RabbitMQ总结 RabbitMQ入门学习系列(七) 远程调用RPC
20190710用控制台启动一个wcf服务
水木 · 2019-07-11 · via 博客园 - 水木

快速阅读

如何用控制台启动一个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

友情提示

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