【问题标题】:how to test if the wcf is really in streaming mode?如何测试 wcf 是否真的处于流模式?
【发布时间】:2011-01-03 10:18:45
【问题描述】:

我的运营合同是这样的:

public interface ISearch
{
    [OperationContract]
    System.IO.Stream DownloadFile(string file);

}

绑定是 nettcpbinding,当我设置缓冲和流传输模式时,wcf 似乎都可以工作。 那么如何测试 wcf 是否在流模式下工作?

【问题讨论】:

    标签: wcf streaming


    【解决方案1】:

    可能是一种非常粗略的方法,但是,您可以使用 Windows 资源监视器来验证 wcf 是否实际上正在流式传输文件。在这里,我正在从 IIS 中托管的服务流式传输一个大文件。 Read/s 和 Write/s 清楚地表明文件在流式传输时正在被读取,并且没有被缓冲。

    【讨论】:

      【解决方案2】:

      发回一个大于绑定配置中maxReceivedMessageSize 设置的文件(默认为 64KB)。如果 WCF 处于 Buffered 模式,它应该会失败。如果它处于StreamedStreamedResponse 模式,它应该可以工作。

      【讨论】:

      • 我测试过,似乎即使在流模式下,wcf 也会因为超出 maxReceivedMessageSize 而失败。
      • 它也可能因为超时而失败 - 请您发布您的服务代码以及服务和客户端配置吗?
      • 异常不是超时异常。让我做更多的测试。快回来。我认为 maxReceivedMessageSize 总是在缓冲或流模式下工作。看到这篇文章:haveyougotwoods.com/archive/0001/01/01/… 它的配置总是给 maxReceivedMessagSize 一个更大的值,即使在流模式下
      • @marc_s,是的。测试后。很明显,maxReceivedMessageSize 可以在缓冲模式或流模式下工作。
      • 在此处添加一些代码和进一步的问题:stackoverflow.com/questions/2037521/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2011-08-13
      • 2014-10-02
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多