6

Web 服务是一个 ASMX Web 服务(不是 WCF)

我收到一个错误

已超出传入邮件 (65536) 的最大邮件大小配额。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性

当您添加“Web 引用”时,我正在使用 Visual Studio 为您生成的代理(请注意,我没有添加“服务引用”,而是使用 Web 引用)...这将创建一个继承自SoapHttpClientProtocol

谁能帮我弄清楚如何MaxReceivedMessageSize为此方法设置等效项?HttpBinding.MaxReceivedMessageSize = Int32.MaxValue(如果我使用 WCF ,我要求相当于做的事情)

4

3 回答 3

4

MaxReceivedMessageSize 更改可以在 App.config 文件中或在调用服务方法之前在源代码中完成。

 BasicHttpBinding httpBinding = youAddWebServiceName.ChannelFactory.Endpoint.Binding as BasicHttpBinding;
 httpBinding.MaxReceivedMessageSize = int.MaxValue;
于 2014-07-07T18:53:57.807 回答
4

也许它可以帮助某人。我在 ASMX Web 服务中收到相同的错误消息,但那不是来自服务器!它来自客户端,我只是将其添加到客户端配置中:

<basicHttpBinding>
<binding name="BindingName" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000" maxBufferSize="20000000" />
</basicHttpBinding>
于 2016-02-28T12:43:03.017 回答
3

此消息是 WCF 特定的。我怀疑您正在通过 WCF 客户端代理调用您的 ASMX 服务(客户端类继承自ClientBase. 另一方面,典型的 ASMX 客户端代理继承自SoapHttpClientProtocol.

诀窍是,如果您只是从 Visual Studio 中“添加服务引用”,则默认情况下会创建类似 WCF 的代理。为了创建旧类型的代理,您应该在代理创建者对话框中单击“高级”,然后在高级属性对话框中单击“添加 Web 引用”或从命令行调用该wsdl.exe工具。

在“旧”中创建的代理没有任何消息配额。

不过,不建议在服务器和客户端都使用传统的 ASMX 技术

于 2014-07-07T18:50:03.057 回答