我是靠谱客的博主 彩色黑裤,最近开发中收集的这篇文章主要介绍无法启动vs控制台_用控制台启动一个wcf服务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

e2164a3d212c3282cb60d8ecf4e86d76.png

快速阅读

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

wcf类库

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

d1ab372bcd37f3ec01f3010cc1375b5f.png

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

[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();
}

测试结果

89bc3379631f11210e8f5982e0f625cd.png

7c90bd4e4ec934946da95c495acdbeeb.png

参考:

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

友情提示

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

d9b502930b91b28c23ebe40968bdb522.png

最后

以上就是彩色黑裤为你收集整理的无法启动vs控制台_用控制台启动一个wcf服务的全部内容,希望文章能够帮你解决无法启动vs控制台_用控制台启动一个wcf服务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部