Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
C# 调试到WCF服务中_C#_.net_Wcf_Visual Studio 2010_Soa - Fatal编程技术网

C# 调试到WCF服务中

C# 调试到WCF服务中,c#,.net,wcf,visual-studio-2010,soa,C#,.net,Wcf,Visual Studio 2010,Soa,因此,我们在SOA架构中运行。我有一个服务,我正试图调试成一个调用,该调用来自另一个解决方案中的WinForms应用程序 在这个winforms应用程序中,我在app.config中正确引用了localhost上的服务,现在我想启动WCF服务的一个实例,这样我就可以设置一个断点并逐步完成它 进入服务时,我右键单击项目,转到属性,然后在“启动操作”下选择services bin/debug/目录中的.exe文件。然后我保存、编译并点击F5来启动它的一个实例。我得到这个错误: 我应该怎么做?您必须

因此,我们在SOA架构中运行。我有一个服务,我正试图调试成一个调用,该调用来自另一个解决方案中的WinForms应用程序

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

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


我应该怎么做?

您必须将正在本地构建的服务安装为Windows服务,然后将其连接到该服务。

您必须在进程中承载该服务,然后从该进程进行调试。这可能很简单,比如编写控制台应用程序来托管服务,或者编写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();
  }
}
作为
OnStart
方法中的第一行,以便您可以在服务启动时附加调试器。这将有助于调试任何启动问题。否则,您只需从调试菜单中选择AttachToProcess并附加到正在运行的windows服务


您需要使用System.Diagnostics添加
,才能使用
调试器.Launch()方法

服务是在IIS下运行还是自托管?无论哪种方式,一旦服务运行,您都可以通过进入调试->附加过程来附加到它

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


连接后,您可以放入断点并根据需要进行调试。

好的,您在尝试运行/调试类库项目时遇到了该错误,因此请检查您的服务项目是否不是那种类型

如果您想使VS易于运行/调试(并且不存在设计基础架构问题),请将其作为WCF服务应用程序项目,在类似网站的项目中托管服务:

通过这种方式,您可以在其解决方案中运行服务,然后从其解决方案中运行winforms应用程序,然后进入“调试/附加到进程…”菜单并查找服务url和端口:


我希望这会有所帮助,如果没有,请详细说明,以便更清楚地了解您有哪些项目,您的解决方案和其他有用信息。

您是如何托管此服务的?在IIS下还是作为Windows服务?这是一个Windows服务,而不是IIS。您必须连接到它。调试->附加到进程
Debugger.Launch();