20190710用控制台启动一个wcf服务
快速阅读
如何用控制台启动一个wcf服务,已经wcf的配置和在类库中如何实现 。
wcf类库
用vs新建一个类库,引用system.ServiceModel
定义接口实现服务契约和操作契约
[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();
}
测试结果
参考:
wcf元数据相关:https://www.cnblogs.com/xfrog/archive/2010/05/16/1736771.html
友情提示
我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?