2012-09-22 33 views
1

我有一个WCF Restful服务托管在我的Windows应用程序中。如何调试WCF服务?

该服务的客户端是移动应用程序。

客户端调用服务以及消息传递给应用程序和执行工作。

,我现在所面临的问题是,应用程序工作正常,在大多数情况下。但它不适用于某些机器和网络设置。

给出一个更好的主意: 该应用程序不在连接到路由器A的计算机1上工作。现在,当我更改并将其连接到路由器B时,同一应用程序开始在同一台计算机上工作。

同样,应用无法正常运行在连接到路由器A.现在我改机和保持连接到同一个路由器MACHINE1,应用程序工作正常。

我无法弄清楚问题所在。有关如何调试此问题的任何想法?

任何帮助表示赞赏。

回答

5

我会打开跟踪,并在WCF服务消息记录。这可以在服务的web.config/app.config文件中完成,最容易通过Visual Studio中的WCF服务配置工具在工具菜单下提供(注意:一旦打开此工具一次,您将能够关闭它,然后右键点击你的应用程序/ web.config文件,并在Visual Studio会话期间从上下文菜单中选择'编辑WCF配置',并使该文件在工具中自动打开)。在WCF配置编辑器中,导航到诊断部分,您可以打开跟踪和消息登录。注意正在创建日志文件的位置和/或将路径调整到更理想的位置。我还建议启用自动刷新功能,以便更频繁地将信息写入日志。您可能需要在跟踪会话后循环该服务,以确保日志文件包含所有相关信息。现在

,从非工作配置打服务。使用svctraceviewer.exe检查日志,您可以在程序文件下的SDK文件夹中找到它。查看日志中是否有任何内容跳出来,如果不是,则清除服务器上的现有日志文件,并检查来自有效会话的一组日志文件,以尝试对比这些差异。

这里是MSDN关于WCF跟踪一个链接,可能会有所帮助: http://msdn.microsoft.com/en-us/library/ms730342.aspx

+0

另一件可能适用于您的事情是在服务器机器上安装Visual Studio,或安装Visual Studio远程调试服务并尝试附加到服务器上的服务主机。为了能够进入代码,您必须确保服务器上的二进制文件是经过调试编译的并具有pdb文件。有关远程调试的更多信息,请查阅http://msdn.microsoft.com/en-us/library/y7f5zaaa(v=vs.100).aspx。 – codechurn

+0

谢谢你真的很清楚解决这个问题。 – Sandeep

0

你可以尝试使用像Fiddler工具来检查和比较的消息在不同的环境中被交换。

+0

谢谢乔。我尝试过,但交换的消息在机器上是一样的。 – Sandeep

0

为了达到你的目的,你可以启用跟踪WCF服务。在这个主题上已经有一个关于计算器的链接。

How to turn on WCF tracing?