20190710用控制檯啓動一個wcf服務

快速閱讀

如何用控制檯啓動一個wcf服務,已經wcf的配置和在類庫中如何實現 。html

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服務c#

<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.htmlapp

友情提示

​ 我對個人文章負責,發現好多網上的文章 沒有實踐,都發出來的,讓人走不少彎路,若是你在個人文章中遇到沒法實現,或者沒法走通的問題。能夠直接在公衆號《愛碼農愛生活 》留言。一定會再次複查緣由。讓每一篇 文章的流程都能順利實現。測試

相關文章
相關標籤/搜索