如何用控制檯啓動一個wcf服務,已經wcf的配置和在類庫中如何實現 。html
[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(); }
wcf元數據相關:https://www.cnblogs.com/xfrog/archive/2010/05/16/1736771.htmlapp
我對個人文章負責,發現好多網上的文章 沒有實踐,都發出來的,讓人走不少彎路,若是你在個人文章中遇到沒法實現,或者沒法走通的問題。能夠直接在公衆號《愛碼農愛生活 》留言。一定會再次複查緣由。讓每一篇 文章的流程都能順利實現。測試