代码改变世界

WCF步步为营(二):使用配置文件改变发布服务的方式

  敏捷的水  阅读(870)  评论(0编辑  收藏  举报

1. 打开上一个项目

image

2. 修改Program.cs, 注意注释掉的绿色部分,因为我们使用配置文件公布EndPoint

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using JackWangWCFService;

using System.ServiceModel;

namespace JackWangServiceHost

{

    class Program

    {

        static void Main(string[] args)

        {

            using (ServiceHost host=new ServiceHost(typeof(JackWangWCFService.Calc)))

            {

                //host.AddServiceEndpoint(typeof(JackWangWCFService.ICalc),

                //    new NetTcpBinding(), "net.tcp://localhost:9000/Add");

                host.Open();

                Console.Out.WriteLine("calc web service started at:"+DateTime.Now.ToString());

                Console.ReadLine();

            }

        }

    }

}

 

3.添加一个App.Config文件,注意Service 的name是实现服务的类,客户端访问的地址是http://localhost:9000/Add

 

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.serviceModel>

    <services>

      <service name="JackWangWCFService.Calc" behaviorConfiguration="serviceBehavior">

        <endpoint  binding="basicHttpBinding"  contract="JackWangWCFService.ICalc" address="Add"></endpoint>

        <host>

          <baseAddresses>

            <add baseAddress="http://localhost:9000"/>

          </baseAddresses>

        </host>

      </service>

    </services>

    <behaviors>

      <serviceBehaviors>

        <behavior name="serviceBehavior">

          <serviceMetadata httpGetEnabled="true"/>

        </behavior>

      </serviceBehaviors>       

    </behaviors>

  </system.serviceModel>

</configuration> 

 

 

4.修改客户端的代码,注意这次使用的是http的传输方式

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

namespace JackWangServiceClient

{

    [ServiceContract]

    public interface ICalc

    {

        [OperationContract]

        long Add(int a, int b);

    }

    class Program

    {

        static void Main(string[] args)

        {

            ICalc proxy = ChannelFactory<ICalc>.CreateChannel(new BasicHttpBinding(),

                new EndpointAddress("http://localhost:9000/Add"));

            long result = proxy.Add(50, 60);

            Console.Out.WriteLine("result from server is:" + result);

            Console.ReadLine();

        }

    }

}

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示