向 Web 服务发送请求时,我遇到了一个非常烦人的问题。
请求消息的参数之一是Batch
,可以设置为Y
或N
。当我将此设置N
为没有问题时,我会收到包含单个订单详细信息的响应。
但是,当我设置Batch
为时Y
,我看到了这个错误:
附加信息:已超出传入邮件的最大邮件大小配额 (65536)。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。
为了解决这个问题,我尝试MaxReceivedMessageSize
在调用服务之前设置:
public Provider.GetMessageResponse GetOrders(bool acceptBatch)
{
var httpBinding = new BasicHttpBinding();
httpBinding.MaxReceivedMessageSize = 2097152;
httpBinding.MaxBufferSize = 2097152;
var request = BuildRequest(acceptBatch);
var client = new Provider.PullServiceClient();
var response = client.PullGetMessage(SecurityToken, request);
return response;
}
但是,我仍然看到错误消息(即使我可以看到httpBinding.MaxReceivedMessageSize
在运行该代码后确实增加了),并且服务(不是由我托管)告诉我消息已被收集(这确实有意义,因为它似乎消息只有在到达我的系统后才被阻止)。
此外,当我使用 xml 从应用程序执行完全相同的请求时SoapUI
,我确实收到了没有任何问题的批处理响应,并且我可以看到所有可用订单的长列表。
那么这个MaxReceivedMessageSize
属性是否只适用于我的应用程序而不是整个系统?如果是这样,为什么上面的代码不能解决这个问题?