繁体   English   中英

您如何调试WCF问题?

[英]How do you debug an WCF issue?

使用WS绑定的WCF服务遇到了一个奇怪的问题。 当我没有会话配置(安全性/可靠性)时,它就可以正常工作,但在会话中却不能。 例如,当我配置安全性(消息安全性,Windows凭据)时,在第10次或第11次调用后会超时。 我的服务调用了另一个WCF服务,但是两个服务都配置了相同的绑定参数。

您将如何调试这样的问题? 除了打开跟踪和使用SvcTraceViewer之外,您还将使用哪些工具?

在开发WCF服务时,最容易浪费时间的地方之一就是绑定配置。 对于初学者,请认真地在源代码存储库中备份您的工作配置。 您可能还想为配置文件本身添加一个验证例程,该例程在创建服务之前运行。

就调试此类WCF问题而言,实际上并没有替代旧的Trace.WriteLine()的好方法,该方法写入在服务和客户端上映射到文件的TraceListener。 但是,实际上,考虑到您的问题相当普遍,并且很可能与100%的配置相关,我建议您进一步了解绑定设置,尤其是超时。 将值设置为任意高数字,甚至设置为Timeout.Infinite数值(作为字符串),这实际上将告诉WCF允许无限超时。 然后,问问自己,为什么绑定会稍有变化,但有些东西却超时了。

关于您的特定问题,由于未通过显式调用Close()方法正确关闭客户端代理,因此可能无法正确终止会话。 在处理无会话绑定时,您也许可以摆脱这种情况,但是除非您关闭代理,否则会话将不会被释放。 这样做的副作用是通常将达到10个并发会话的默认服务限制值。 了解会话的生命周期后,您可能需要研究可以为服务合同的方法上的OperationContract属性指定的IsInitiating,IsTerminate和IsOneWay属性。

这里有一些有用的资源:

OperationContract :(不会链接的奇怪网址)
http://en.csharp-online.net/WCF_Services —OperationContract_Attribute

使用会话:
http://msdn.microsoft.com/en-us/library/ms733040.aspx

WCF会话,实例化和可靠消息传递的摘要
http://www.pluralsight.com/community/blogs/aaron/archive/2006/02/27/19253.aspx

而且,正如Brian提到的那样,我对一个棘手问题的回答:
WCF服务限制

调试这种情况的最佳方法是激活WCF服务/客户端中的跟踪。 跟踪程序将创建日志文件,您可以使用内置的跟踪查看器进行读取。 http://msdn.microsoft.com/en-us/library/ms733025.aspx

听起来您可能快要踩油门了...

WCF服务限制

http://kennyw.com/indigo/150

不要忘记从客户端调用代理上的.Close()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM