无法在WCF中序列化字节数组

时间:2015-06-29 19:17:52

标签: c# arrays wcf binding bytearray

当我尝试下载文件时,我正在使用WCF API并且无法使用字节数组序列化对象。文件大小很小:104字节。 对象是:

[DataContract]
  public class File
 {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public byte[] Data { get; set; }

}

我尝试在类中使用KnownType(typeof(byte)),KnownType(typeof(byte []))和KnownType(typeof(Array)),但没有成功。

我也尝试使用字节数组的Base64返回一个字符串,但它不起作用。

我在客户端没有错误消息。在收到TimeOut消息(我等待超过1分钟)之前,WCF只是不返回对象。 我还尝试更改Web配置中的大小。有我的绑定配置:

<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
             closeTimeout="0:10:00" openTimeout="1:10:00" receiveTimeout="1:10:00" sendTimeout="1:10:00" allowCookies="false" 
             messageEncoding="Mtom" textEncoding="utf-8">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
                    maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
      <reliableSession enabled="true" inactivityTimeout="00:25:00"/>
      <security mode="None"/>
    </binding>
  </wsHttpBinding>
</bindings>

Plase,帮帮我!!

1 个答案:

答案 0 :(得分:1)

几天后,我发现了解决问题的方法。 问题出在客户端,而不是服务器端,就像我想的那样。 我忘了在客户端使用maxReceivedMessageSize标记。 所以,我复制了绑定块中的所有内容,然后粘贴到客户端webconfig中,它就可以了。