调试到WCF服务

问题描述:

因此我们运行在SOA架构中。我有一个服务,我正在尝试调试来自不同解决方案中的WinForms应用程序的调用。调试到WCF服务

在这个Winforms应用程序中,我已经在app.config中正确引用了localhost上的服务,现在我想启动WCF服务的一个实例,以便我可以设置一个断点并逐步完成它。

当我进入服务时,我右键单击该项目,转到属性,然后在“开始操作”下选择services bin/debug /目录中的.exe文件。然后我保存,编译并按F5启动它的一个实例。我得到这个错误:

enter image description here

我应该怎么做?

+0

您是如何托管此服务的?在IIS下或作为Windows服务? – Jeff

+0

这是一个Windows服务,而不是IIS – slandau

+0

您将不得不附加到它。调试 - >附加到进程 – ppiotrowicz

你必须在一个进程中托管服务,然后从那里调试它。这可以像编写一个控制台应用程序来承载服务,或编写一个Windows服务来承载它,或者一个Windows窗体应用程序,或将它托管在IIS中一样简单。

,你可以在一个控制台应用主机,像这样:

static void Main(string[] args) 
{ 
    using (ServiceHost host = new ServiceHost(typeof(YourNamespace.YourServiceInterface))) 
    { 
    host.AddServiceEndpoint(typeof(
YourNamespace.YourServiceInterface), new NetTcpBinding(), "net.tcp://localhost:9000/YourService"); 
    host.Open(); 

    Console.WriteLine("Press <Enter> to terminate the Host 
application."); 
    Console.WriteLine(); 
    Console.ReadLine(); 
    } 
} 

this article展示了如何在Windows服务的主机。我会建议增加

Debugger.Launch(); 

为第一线的OnStart方法,以便在服务启动时,您可以附加调试器。这将有助于调试任何启动问题。否则,你可以从Debug菜单中选择AttachToProcess,然后附加到正在运行的windows服务上。

你需要添加using System.Diagnostics使用Debugger.Launch();方法

您必须将您在本地构建的服务安装为Windows服务,然后附加到该服务。

是IIS或下运行该服务自托管?无论哪种方式,一旦服务运行,您可以通过进入Debug-> Attach Process来附加它。

如果在IIS下运行,则需要查找w3wp.exe(IIS 7)进程。请注意,要附加到此过程,您很可能必须以管理员身份运行VS。如果您运行的是旧版本的IIS,则该过程称为aspnet_XXX。

一旦你连接,你可以放入你的断点并根据需要进行调试。

+0

它是自己托管的 – slandau

嗯,当你尝试运行/调试一个类库项目时,你有这个错误,所以检查你的服务项目是不是那种。

如果你想很容易(而且也没有设计infraestructure问题),从VS运行/调试然后使它它承载服务,像项目网站上的WCF服务应用程序项目:https://dl-web.dropbox.com/get/Photos/web/wcfserviceapp.png?w=44e8c6ed

这你可以在解决方案中运行该服务,然后从解决方案中运行winforms应用程序,然后进入菜单“Debug/Attach to process ...”“并查找服务URL和端口:https://dl-web.dropbox.com/get/Photos/web/debugattachtoprocess.png?w=8c917c28

我希望这可以帮助,如果不是请详细说明有你们有什么样的项目更清晰的概念,怎么会是你的解决方案和其他有用的信息