C# Can';在WCF中序列化字节数组
我使用的是WCF API,当我尝试下载文件时,无法用字节数组序列化对象。文件大小很小:104字节。 目标是:C# Can';在WCF中序列化字节数组,c#,arrays,wcf,binding,bytearray,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
[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的字符串,但没有成功
我在客户端没有错误消息。WCF只是在我收到超时消息之前不返回对象(我已经等待了超过1分钟)。
我还尝试更改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>
普拉斯,帮帮我 几天后,我找到了解决问题的办法。 问题出在客户端,而不是像我想的那样出在服务器端。 我忘了在客户端使用
maxReceivedMessageSize
标记。
因此,我复制了绑定块中的所有内容,并将其粘贴到客户端网络配置中,它就可以工作了。您已经为服务器更改了它,但是您的客户端绑定是否配置为接收大于默认16K的消息大小?我真的很困惑。您是在使用WCF API还是在制作一个?你为什么要尝试序列化或反序列化你的下载?我只是重新阅读了这个问题,看到你的文件只有104字节,而不是104K,所以忽略我的其他评论。@A.sharif我使用的是WCF API,我正在做一个允许下载文件的方法。不是大文件。最大容量为20 MB的文件。我在这里读了很多关于它的问题,我尝试了所有的解决方案,就像我在这里写的那样。他们中的任何一个都对我有用。所以你要么是一个服务的客户,要么就是一个服务。你是哪一个?