通过WCF服务发送大块数据
论客户通过WCF服务发送大块数据,wcf,Wcf,论客户 [DataContract] public class Request [DataMember] public int ID { get; set; } [DataMember] public string Data { get; set; } } public Response ProcessData(Request request) { //do something with request.Data } 如果我传递一个较小的字符串,效果会
[DataContract]
public class Request
[DataMember]
public int ID { get; set; }
[DataMember]
public string Data { get; set; }
}
public Response ProcessData(Request request)
{
//do something with request.Data
}
如果我传递一个较小的字符串,效果会很好。但是,当我读取文本文件并传递其内容时,它会抛出一个错误“Bad Request 400”
更新:
现在可以了。wcf服务器上web.config中的以下条目实现了这一目的
string data = [some large data];
server.ProcessData(new Request() {ID=1, Data=data});
您是否已尝试在服务配置中增加maxReceivedMessageSize
等?是的,我尝试过,maxReceivedMessageSize=“65536000”。我怀疑数据,我正在传递csv文本(见下文)。这可能是问题所在吗?“评论日期”、“作者”、“ISBN”、“折扣价格”、“1985/01/21”、“道格拉斯·亚当斯”、0345391802,5.95看起来它可以容纳的最大大小大约为8000字节。我添加了另一个带有字符串参数的方法ProcessData1(字符串请求)。当请求大小超过8000左右时,它的行为相同,因此失败。远程服务器返回意外响应:(400)错误请求。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" closeTimeout="00:03:00" openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
<security mode="None"/>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>