WCF(Windows Communication Foundation) - 消息处理:使用流数据传输文件,减少内存开销。

 


化零为整WCF(8) - 消息处理(使用流数据传输文件)


作者:​​webabcd​



介绍

WCF(Windows Communication Foundation) - 消息处理:使用流数据传输文件,减少内存开销。



示例

1、服务

IStreamed.cs

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Collections.Generic;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Linq;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Text;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.ServiceModel;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.IO;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化namespace WCF.ServiceLib.Message

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化_10化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_11化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    /// 消息契约(定义与 SOAP 消息相对应的强类型类)

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    [MessageContract]

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    public class FileWrapper

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 指定数据成员为 SOAP 消息头

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        [MessageHeader]

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        public string FilePath;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 指定将成员序列化为 SOAP 正文中的元素

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        [MessageBodyMember]

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        public Stream FileData;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    /// IStreamed接口

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    [ServiceContract]

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    public interface IStreamed

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 上传文件

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// <remarks>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 1、支持数据流传输的绑定有:BasicHttpBinding、NetTcpBinding 和 NetNamedPipeBinding

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// 2、流数据类型必须是可序列化的 Stream 或 MemoryStream

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        // /3、传递时消息体(Message Body)中不能包含其他数据,即参数中只能有一个System.ServiceModel.MessageBodyMember

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// </remarks>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// <param name="fileWrapper">WCF.ServiceLib.Message.FileWrapper</param>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        [OperationContract]

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        void UploadFile(FileWrapper fileWrapper);

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_60}

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

Streamed.cs

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Collections.Generic;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Linq;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Text;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.ServiceModel;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.IO;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化namespace WCF.ServiceLib.Message

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化_10化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_11化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    /// IStreamed类

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    public class Streamed : IStreamed

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 上传文件

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// <param name="fileWrapper">WCF.ServiceLib.Message.FileWrapper</param>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        public void UploadFile(FileWrapper fileWrapper)

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            var sourceStream = fileWrapper.FileData;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            var targetStream = new FileStream(fileWrapper.FilePath,

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                FileMode.Create,

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                FileAccess.Write,

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                FileShare.None);

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            var buffer = new byte[4096];

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            var count = 0;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            while ((count = sourceStream.Read(buffer, 0, buffer.Length)) > 0)

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14            化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                targetStream.Write(buffer, 0, count);

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16            }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            targetStream.Close();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            sourceStream.Close();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_60}

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化


2、宿主

Streamed.cs

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using (ServiceHost host = new ServiceHost(typeof(WCF.ServiceLib.Message.Streamed)))

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化_10化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_11化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    host.Open();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    Console.WriteLine("服务已启动(WCF.ServiceLib.Message.Streamed)");

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    Console.WriteLine("按<ENTER>停止服务");

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    Console.ReadLine();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_60}

App.config

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化<?xml version="1.0" encoding="utf-8" ?>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化<configuration>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化  <system.serviceModel>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    <services>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <!--name - 提供服务的类名-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <!--behaviorConfiguration - 指定相关的行为配置-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <service name="WCF.ServiceLib.Message.Streamed" behaviorConfiguration="MessageBehavior">

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <!--address - 服务地址-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <!--binding - 通信方式-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <!--contract - 服务契约-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <!--bindingConfiguration - 指定相关的绑定配置-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <endpoint address="Message/Streamed" binding="netTcpBinding" contract="WCF.ServiceLib.Message.IStreamed" bindingConfiguration="StreamedBindingConfiguration" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <host>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <baseAddresses>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化            <add baseAddress="http://localhost:12345/Message/Streamed/"/>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化            <add baseAddress="net.tcp://localhost:54321/"/>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          </baseAddresses>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        </host>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      </service>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    </services>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    <behaviors>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <serviceBehaviors>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        <behavior name="MessageBehavior">

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--httpGetEnabled - 使用get方式提供服务-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <serviceMetadata httpGetEnabled="true" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <serviceDebug includeExceptionDetailInFaults="true"/>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化        </behavior>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      </serviceBehaviors>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    </behaviors>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    <bindings>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <netTcpBinding>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--transferMode - 指示通道是使用流处理模式还是缓冲模式来传输请求和响应消息-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--maxReceivedMessageSize - 在采用此绑定配置的通道上可接收的最大消息大小(单位:字节)-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--receiveTimeout - 在传输引发异常之前可用于完成读取操作的时间间隔-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <binding name="StreamedBindingConfiguration" transferMode="Streamed" maxReceivedMessageSize="1073741824" receiveTimeout="00:10:00" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      </netTcpBinding>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    </bindings>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化  </system.serviceModel>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化</configuration>


3、客户端

Streamed.cs

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Collections.Generic;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Linq;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Text;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.Windows.Forms;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.ServiceModel;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化using System.IO;

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化namespace Client2.Message

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化_10化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_11化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    /// 演示Message.Streamed的类

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15    public class Streamed

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14    化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        /**//// <summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// 流数据上传文件

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// </summary>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        /// <param name="source">源文件地址</param>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        /// <param name="destination">目标路径</param>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15        public void HelloStreamed(string source, string destination)

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14        化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            try

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14            化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                var proxy = new MessageSvc.Streamed.StreamedClient();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                var sr = new System.IO.FileStream(

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                    source, System.IO.FileMode.Open);

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                proxy.UploadFile(destination + Path.GetFileName(source), sr);

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                sr.Close();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                proxy.Close();

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                MessageBox.Show("上传成功");

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16            }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15            catch (Exception ex)

化零为整WCF(8) - 消息处理(使用流数据传输文件)_上传文件_13化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据传输_14            化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_12{

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_15                MessageBox.Show(ex.ToString());

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16            }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16        }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_消息处理_16    }

化零为整WCF(8) - 消息处理(使用流数据传输文件)_数据_60}

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化

App.config

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化<?xml version="1.0" encoding="utf-8" ?>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化<configuration>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化  <system.serviceModel>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    <client>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <!--address - 服务地址-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <!--binding - 通信方式-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <!--contract - 服务契约-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <endpoint address="net.tcp://localhost:54321/Message/Streamed" binding="netTcpBinding" contract="MessageSvc.Streamed.IStreamed" bindingConfiguration="StreamedBindingConfiguration" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    </client>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    <bindings>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      <netTcpBinding>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--transferMode - 指示通道是使用流处理模式还是缓冲模式来传输请求和响应消息-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <!--sendTimeout - 在传输引发异常之前可用于完成写入操作的时间间隔-->

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化          <binding name="StreamedBindingConfiguration" transferMode="Streamed" sendTimeout="00:10:00" />

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化      </netTcpBinding>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化    </bindings>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化  </system.serviceModel>

化零为整WCF(8) - 消息处理(使用流数据传输文件)_序列化</configuration>


运行结果:

上传文件后提示上传成功