【问题标题】:How do you debug an WCF issue?您如何调试 WCF 问题?
【发布时间】:2010-10-07 11:27:14
【问题描述】:

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

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

【问题讨论】:

    标签: .net wcf configuration wcf-binding


    【解决方案1】:

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

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

    关于您的具体问题,会话可能未正确终止,因为客户端代理未通过显式调用 Close() 方法正确关闭。当您处理无会话绑定时,您可能能够摆脱这种情况,但除非您关闭代理,否则会话不会被释放。这样做的副作用是会达到通常 10 个并发会话的默认服务限制值。了解会话的生命周期后,您可能需要研究可以在服务契约的方法上为 OperationContract 属性指定的 IsInitiating、IsTerminating 和 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 Service Throttling

    【讨论】:

    • 关闭会话是我查看的第一个区域,因为我知道上面提到的会话限制设置。另外,我同意大多数问题都与配置有关。
    • 那么,您排除了会话问题吗?是什么让你相信它不相关?增加限制设置是否允许更多连接?
    【解决方案2】:

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

    【讨论】:

    • 我知道跟踪(见最后一段)。我的问题是还有别的吗。
    • 抱歉,错过了您的评论。但是你为什么需要另一种方式呢?
    • 我只是想知道那里是否还有其他东西。另外我发现追踪并不是那么好用,尤其是当涉及到协议(安全、可靠消息)消息时。
    • 我同意使用 SvcTraceViewer 很痛苦,出于某种奇怪的原因,我认为该实用程序的原始实现比现在更好。
    【解决方案3】:

    听起来你可能正在踩油门......

    WCF Service Throttling

    http://kennyw.com/indigo/150

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 2012-08-25
        相关资源
        最近更新 更多