控制台中寄宿WCF服务

一、首先创建一个类库,用来定义WCF服务

修改服务代码定义,具体代码如下

	 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IHelloService”。
    [ServiceContract]
    public interface IHelloService
    {
        [OperationContract]
        string GetMessage(string message);
    }

	 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“HelloService”。
    public class HelloService : IHelloService
    {
        public string GetMessage(string message)
        {
            return message + "@" + DateTime.Now;
        }
    }

二、创建一个控制台项目,用来承载WCF服务

1、首先添加对服务类库的引用,并添加引用System.Service.Model

2、修改配置文件,在 <system.serviceModel> </system.serviceModel>节点中设置服务相关节点信息、绑定信息以及基地址,具体代码如下

	  <system.serviceModel>
    <services>
      <service name="SimpleService.HelloService">
        <!--设置服务节点,服务的地址直接采用基地址,使用basicHttpBinding-->
        <endpoint address="" binding="basicHttpBinding" contract="SimpleService.IHelloService">
        </endpoint>
        <!--设置元数据交换节点-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
        </endpoint>
        <host>
          <baseAddresses>
            <!--服务的基地址用来访问获取元数据-->
            <add baseAddress="http://localhost:8057/HelloService"/>
          </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>

3、启动服务

在main方法中加入如下代码启动服务

 using (ServiceHost host = new ServiceHost(typeof(HelloService)))
 {
         host.Open();

        Console.WriteLine("WCF 已经启动@" + DateTime.Now);

        Console.ReadKey();
}

服务启动后效果如下图

如果出现如下异常信息,只要以管理员身份重新启动VS并启动服务即可

posted @   喝前摇一摇  阅读(1675)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示