2011-08-10 111 views
0

我构建了含4个项目一点点的解决方案:调试WCF项目

  • 合同:包括我(T4生成)实体和接口,我的服务

  • 服务:包含(产生T4)我上下文和执行我的服务

  • 主持人:包含了最低限度托管服务

ServiceHost host = new ServiceHost(typeof(InleerAppService));

try 
{ 
    host.Open(); 

    Console.WriteLine("The service is ready!"); 
    Console.ReadKey(); 

    host.Close(); 
} 
catch (CommunicationException cex) 
{ 
    Console.WriteLine(cex.Message); 
} 
  • 客户:

变种工厂=新的ChannelFactory( “InleerAppService”);

IInleerAppService service = factory.CreateChannel(); 
var result = service.ReturnInput("test string"); // just returns the input string, this works! 

Console.WriteLine(result); 

var result2 = service.GetAllCompanies(); // this doesn't and crashes the client 

foreach (Company c in result2) 
{ 
    Console.WriteLine(c.Name); 
} 

Console.ReadKey(); 

你明白我想知道是怎么回事。但我真的不明白我该如何调试。首先我用ctrl + F5启动主机,然后是客户端。但是这不允许我调试。我该怎么去,使用这个设置?我知道有更多的方法来处理服务,但是对于这部分我只想关注这个设置。

回答

1

您可以设置解决方案来启动多个项目,然后点击F5。要进行设置,请右键单击解决方案并转到属性。选择公共属性下的启动项目。并选择您的服务和客户端项目启动。

调试的另一种方法是选择服务项目,右键单击并转到调试 - >启动新实例。接下来,为客户项目做同样的事情。现在,您应该同时在调试模式下运行服务和客户端项目。