没想过怎么调试的,不过,我是对WCF的调试是这样操作的:
1、WCF服务只是外壳,不做任何实质性的功能
2、把WCF服务的具体功能独立到一个DLL中
3、通过对这个DLL的调试,完成对WCF功能的调试。
4、单独对WCF进行调试,看数据是否正确传递数据。
在写DLL的时候要进行测试,没有调试,太麻烦了!
@Peter_youny:
APP -> WCFCaller -> WCFClient -> WCFServer -> WCFFunction
APP -> WCFCaller -> WCFFunction
“一个解决方案下面放了宿主,服务,以及调用程序。” 你这说说的什么意思??
======================
您的wcf服务是标准的寄宿于IIS的的(这个的话,可以启动一个WCF测试客户端的工具),还是控制台的(windows应用程序(可以直接在你的方法设置一个断点,客户端调用这个方法了,就可以一步步的调试了))?
===本来可以给你一个截图看看的恶,结果无法上传图片,抱歉==
宿主是什么,无所谓,在WCF中的方法里面设置断点没什么用的
@Peter_youny: “宿主是什么,无所谓” 这个 “无所谓” 我想知道,您是怎么实现的? 求赐教!
@Angkor: 宿主可以是控制台,可以是web,winForm!我的“无所谓”指的是我的问题本身不是在于宿主,而在于调试
以 管理員 身份 打開vs,然後 點擊 運行,就可以調試了哦。
如果是客户端启动调用WCF服务,报错就会出现 调用目标异常 (如果不是代码内部错误,是一般不会抛出错误代码区域的)。这个比较无语。
我现在用的是添加日志文件。在wcf位置文件中添加跟踪节点:
<system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true"> <listeners> <add name="xml" /> </listeners> </source> </sources> <sharedListeners> <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="d:\temp\wcf.svclog" /> </sharedListeners> </system.diagnostics>
来源:dudu
不能调试的情况下,主要还是靠打日志
在宿主项目上右键调试,启动新实例。然后在客户端项目上右键调试,启动新实例
在调试的时候,要启动两个项目,客户端和服务端,要调试的WCF就是要调试服务端项目,可以设置服务端项目的属性,调试,在命令行参数中输入:/client:"WcfTestClient.exe",这样在项目启动调试的时候,就会调用vs自带的WCF宿主来可方便测试。
操作如下:
调试情形如下: