Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试本地IIS中承载的WCF服务不工作_Wcf_Web Services_Debugging - Fatal编程技术网

调试本地IIS中承载的WCF服务不工作

调试本地IIS中承载的WCF服务不工作,wcf,web-services,debugging,Wcf,Web Services,Debugging,我有一个解决方案WCFSampleSolution,它有我所有的项目——Web服务、客户端和网站。结构类似于: WCF样品溶液 C:\WCFSample\Website WCF服务 WCFWebClient 我为我的服务创建了WCFService项目。它包含IService1.cs和Service1.cs。然后我在IIS中托管了该服务。为此,我创建了一个网站,并将.svc和web.config文件添加到网站项目中。然后在IIS中发布。当我运行http:\MyMachineName\Web

我有一个解决方案WCFSampleSolution,它有我所有的项目——Web服务、客户端和网站。结构类似于:

  • WCF样品溶液
    • C:\WCFSample\Website
    • WCF服务
    • WCFWebClient
我为我的服务创建了WCFService项目。它包含IService1.cs和Service1.cs。然后我在IIS中托管了该服务。为此,我创建了一个网站,并将.svc和web.config文件添加到网站项目中。然后在IIS中发布。当我运行http:\MyMachineName\Website\Service.svc时,它会显示服务描述。然后我创建了调用webservice的web客户端。我使用服务引用来添加服务。它调用Service1的方法。它很好用。但是我无法调试这个程序/设置。我验证了WCFWebClient项目和网站项目中的配置文件,它们具有正确的调试设置

<compilation debug="true">

我设置了断点,但我的seb服务从未进行过控制。我也尝试了附加过程,但它也不起作用。但我能够调试我的另一个WCF项目。设置有点不同。在该项目中,我复制了web客户端中的.svc文件和配置,调试工作正常


请帮忙

您正在IIS上托管服务,因此我确信您必须连接到w3wp.exe进程。在尝试连接VS内置web服务器是否启动时,也要连接到该进程。

@user465876-这里可以找到另一种不那么麻烦的方法:

我发现特别容易的是打开两个visual studio实例(特别是如果您使用NUnit或做任何事情来测试代码)。一个将附加NUnit或任何您想要的,另一个将附加w3wp.exe进程。最简单的方法是:

1) 在VisualStudio的第一个实例中放置一个断点,然后代码将访问您计算机上托管的WCF服务

2) 代码在断点处停止后,在要中断的visual studio第二个实例中设置断点,然后附加w3wp.exe进程

3) 一旦继续,服务代码上的断点将被命中


在附加w3wp.exe时,有时更容易找到进程id。使用IIS,您可以转到“工作进程”,找到要为应用程序池名称附加的进程id。

Pradeep,非常感谢您的回复。我不知道如何连接到w3wp?我所做的是,打开VS 2008,然后打开工具->附加到进程并选择aspnet_wp.exe。我确信我做得不对,因为在我连接上之后,我在VS上什么都做不了。你能指导我怎么做吗?最后一行是什么意思?aspnet_wp.exe是正确的附加进程。我猜你是在Windows XP机器上。你正在采取正确的步骤。我见过这样的行为,即即使服务托管在IIS中,VS也会启动其内置的web服务器“WebDev.WebServer40.exe”(我在VS2010中看到这个名称)。您还需要沿着aspnet_wp.exe的一侧附加到它。你也可以分享你的代码库,这样我也可以看看。谢谢Pradeep,我无法调试。我在这里缺少的是,我需要为调试做的步骤:我将把它放在这里给其他人:1。在调用web服务方法之前,在客户端和服务方法中放置断点(重要)。2.运行应用程序。3.当控件位于客户端断点时,打开调试->附加到进程并选择aspnet_wp.exe。4.现在开始调试。瞧!!!我使用Windows7,我只有5个w3wp.exe。。如果我把它附在它们中的任何一个上。。那么它会起作用吗@普拉迪普