Web Service是ASMX Web服务(非WCF)
我收到错误
已超出传入邮件的最大邮件大小限额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性
当您添加“Web引用”时,我正在使用Visual Studio为您生成的代理(请注意我不添加“服务引用”,而是使用Web引用)...这会创建一个代理,继承自SoapHttpClientProtocol
任何人都可以帮我弄清楚如何为这种方法设置等效的MaxReceivedMessageSize
吗? (如果我使用WCF,我要求相当于做HttpBinding.MaxReceivedMessageSize = Int32.MaxValue
答案 0 :(得分:4)
也许它对某人有所帮助。我在ASMX Web服务中收到相同的错误消息,但这不是来自服务器!它来自客户端,我只是将其添加到客户端配置:
<basicHttpBinding>
<binding name="BindingName" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000" maxBufferSize="20000000" />
</basicHttpBinding>
答案 1 :(得分:3)
此消息特定于WCF。我怀疑你是通过WCF客户端代理调用你的ASMX服务(客户端类继承自ClientBase
)。另一方面,典型的ASMX客户端代理继承自SoapHttpClientProtocol
。
诀窍是,如果你只是&#34;添加服务参考&#34;在Visual Studio中,默认情况下会创建类似WCF的代理。要创建旧类型代理,您应该单击&#34;高级&#34;在代理创建者对话框上然后&#34;添加网络参考&#34;在高级属性对话框上或从命令行调用wsdl.exe
工具。
在&#34; old&#34;中创建的代理没有任何消息配额。
尽管如此,使用旧版ASMX技术,不建议用于服务器和客户端。
答案 2 :(得分:3)
在调用服务方法之前,可以在App.config文件或源代码中完成MaxReceivedMessageSize更改。
BasicHttpBinding httpBinding = youAddWebServiceName.ChannelFactory.Endpoint.Binding as BasicHttpBinding;
httpBinding.MaxReceivedMessageSize = int.MaxValue;