如何用控制台启动一个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
我对个人文章负责,发现好多网上的文章 没有实践,都发出来的,让人走不少弯路,若是你在个人文章中遇到没法实现,或者没法走通的问题。能够直接在公众号《爱码农爱生活 》留言。一定会再次复查缘由。让每一篇 文章的流程都能顺利实现。测试