none
请教高手WCF流传输模式问题 RRS feed

  • 问题

  • 各位同仁,有个WCF问题请教下大家。
    WCF传输流模式对契约形参是有要求的,比如形参对象必须是stream,如果加其他参数需要做消息处理。。。。问题是我的tcp绑定设置了其传输模式是流模式,为何任意形式的契约调用都没有问题那?????????
    下边是相关配置:
     <binding name="DIDINetTcpBinding" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" transactionFlow="false" transferMode="Streamed" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:01:00" enabled="false" />
              <security mode="None"></security>
            </binding>

    契约接口
            [OperationContract]
            IList<WB_MYORDERINFO> LoadOrder(string CorpID, Guid QYUserID, DateTime beginTime, DateTime endTime, out sbyte result);

    以上配置及契约调用竟然没问题,难道传输模式发现没有流定义自动改成缓冲模式了?????????
    2018年4月8日 9:05

全部回复

  • 嗨,

    我同意你的观点,对于使用Streamed除了设置transferMode,还需要满足下面条件。

    1. 方法参数里面Stream参数只能有一个

    2. 方法参数或返回类型必须是Stream, Message, or IXmlSerializable其中的一个。

    你的方法定义里面并没有指定Stream, 所以应该还是用的buffer传递的。

    Best Regards,

    Tao Zhou


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月9日 6:11
    版主