因此,我们在SOA架构中运行。我有一个服务,想要调试来自不同解决方案中WinForms应用程序的调用。
在这个WinForms应用程序中,我已经在app.config中正确引用了本地主机上的服务,现在我想启动WCF服务的一个实例,以便可以设置断点并逐步执行它。
当我进入服务时,我右键单击项目,选择属性,在“启动操作”下选择服务bin/debug/目录中的.exe文件。然后我保存、编译并按 F5 键启动它的一个实例。我会得到这个错误:
我应该做什么?
因此,我们在SOA架构中运行。我有一个服务,想要调试来自不同解决方案中WinForms应用程序的调用。
在这个WinForms应用程序中,我已经在app.config中正确引用了本地主机上的服务,现在我想启动WCF服务的一个实例,以便可以设置断点并逐步执行它。
当我进入服务时,我右键单击项目,选择属性,在“启动操作”下选择服务bin/debug/目录中的.exe文件。然后我保存、编译并按 F5 键启动它的一个实例。我会得到这个错误:
我应该做什么?
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();
}
}
这篇文章展示了如何在Windows服务中托管。我建议添加
Debugger.Launch();
您必须将您正在构建的服务本地作为Windows服务进行安装,然后附加到它。
服务是在IIS下运行还是自主托管的?无论哪种方式,一旦服务启动,您都可以通过进入“调试->附加进程”来连接服务。
如果在IIS下运行,您需要查找w3wp.exe(IIS 7)进程。请注意,要附加到此进程,您很可能需要以管理员身份运行VS。如果您正在运行旧版IIS,则该进程称为类似aspnet_XXX的名称。
一旦连接成功,您就可以设置断点并按需要进行调试。
嗯,当您尝试运行/调试类库项目时,会出现该错误,请检查您的服务项目是否不是这种类型。
如果您想要使其易于(并且没有设计基础结构问题),可以从VS中运行/调试它,那么将其设置为WCF服务应用程序项目,该项目将在网站中托管服务: https://dl-web.dropbox.com/get/Photos/web/wcfserviceapp.png?w=44e8c6ed
这样,您就可以在其解决方案中运行服务,然后从其解决方案中运行winforms应用程序,然后可以转到菜单“调试/附加到进程...”,并查找服务URL和端口:https://dl-web.dropbox.com/get/Photos/web/debugattachtoprocess.png?w=8c917c28
我希望这有所帮助,如果没有,请详细说明您拥有哪些项目类型,您的解决方案以及其他有用信息,以便更清楚地了解情况。