c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务

文章目录

      • 1.项目结构背景介绍
      • 2.配置wcf服务于寄宿程序
      • 3.断点F11单步调试

1.项目结构背景介绍

注意我这里是同一个解决方案中!!同一个解决方案中!!
新建wcf服务项目LookPictureService,新建控制台项目用于寄宿wcf服务TestLookPictureService,新建控制台项目TestLookPictureService1作为客户端测试wcf服务,如下:

项目名称 功能解释
LookPictureService wcf服务项目
TestLookPictureService 控制台项目,用于寄宿wcf服务
TestLookPictureService1 控制台项目,作为客户端用于测试wcf服务

TestLookPictureService引用LookPictureService,如下:
c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务_第1张图片
TestLookPictureService使用代码形式进行寄宿,如下:

using LookPictureService;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace TestLookPictureService
{
    class Program
    {
        static void Main(string[] args)
        {
            // Step 1: Create a URI to serve as the base address.
            Uri baseAddress = new Uri("http://localhost:8734/Design_Time_Addresses/LookPictureService/CalculatorService/");
            Uri baseAddress1 = new Uri("http://localhost:8734/Design_Time_Addresses/LookPictureService/LookPictureService/");

            // Step 2: Create a ServiceHost instance.
            ServiceHost selfHost = new CustomServiceHost(typeof(CalculatorService), baseAddress);
            ServiceHost selfHost1 = new CustomServiceHost(typeof(LookPictureService.LookPictureService), baseAddress1);

            try
            {
                //修改默认Binding
                BasicHttpBinding binding = new BasicHttpBinding();
                binding.MaxBufferSize = 2147483647;
                binding.MaxReceivedMessageSize = 2147483647;

                // Step 3: Add a service endpoint.
                selfHost.AddServiceEndpoint(typeof(ICalculator), new BasicHttpBinding(), "CalculatorService");
                selfHost1.AddServiceEndpoint(typeof(ILookPictureService), binding, "LookPictureService");//使用修改的的Binding

                // Step 4: Enable metadata exchange.
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                ServiceMetadataBehavior smb1 = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                smb1.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);
                selfHost1.Description.Behaviors.Add(smb1);

                // Step 5: Start the service.
                selfHost.Open();
                selfHost1.Open();
                Console.WriteLine("The service is ready.");
                Console.WriteLine("The service1 is ready.");

                // Close the ServiceHost to stop the service.
                Console.WriteLine("Press  to terminate the service.");
                Console.WriteLine("Press  to terminate the service1.");
                Console.WriteLine();
                Console.ReadLine();
                selfHost.Close();
                selfHost1.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("An exception occurred: {0}", ce.Message);
                selfHost.Abort();
            }
        }
    }
}

TestLookPictureService1添加对TestLookPictureService的服务引用(注意添加服务引用前需启动TestLookPictureService控制台程序),如下:
c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务_第2张图片

2.配置wcf服务于寄宿程序

在wcf服务项目中的App.config文件中,配置system.web节点,增加compliation debug=“true”,如下:
c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务_第3张图片
配置完wcf服务的App.config文件之后,重新生成解决方案,重新生成寄宿程序TestLookPictureService解决方案,更新TestLookPictureService1客户端服务引用。

3.断点F11单步调试

做完以上步骤,可以在TestLookPictureService1客户端程序中下断点,如下:
c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务_第4张图片
使用F11单步调试,这时就进入到wcf服务项目LookPictureService中来啦,如下:
c# 同一个解决方案中如何调试寄宿在控制台程序的wcf服务_第5张图片
注意,我的这三个项目都在同一个解决方案中哦!!!

你可能感兴趣的:(C#,wcf,.net)