我正在使用 DataServiceContext
从托管 dbml 的 wcf 服务获取数据。它通常工作正常,但返回大量数据(例如二进制文件)的查询会产生常见的 WCF 错误:
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding
问题是我找不到更改 channel 消息大小的方法。
这是我用来初始化类的代码:
var channel = new RPDataModelDataContext(DataServiceBaseAddress);
channel.Credentials = CredentialCache.DefaultCredentials;
其中RPDataModelDataContext
是用entityframework生成的客户端代理类
public partial class RPDataModelDataContext :
global::System.Data.Services.Client.DataServiceContext
{
// ...
谁能指出我正确的方向?
最佳答案
我在这方面也遇到了很多问题。我遗漏了三个细节。
- 您必须准确指定服务
名称
。这应该是完全限定的服务名称。 (即 Namespace.ClassName) 您必须提供端点的准确
地址
。 (见下面的代码)<services> <!-- The service name below has to be the EXACT Namespace.ClassName of your WCF Data Service--> <service name="YourDomainNameHere.YourClassNameHere"> <!-- The address below must be the EXACT address of your service--> <endpoint address ="http://localhost:19766/YourServiceName.svc" binding="webHttpBinding" bindingConfiguration="higherMessageSize" contract ="System.Data.Services.IRequestHandler"> </endpoint> </service> </services>
必须指定
maxReceivedMessageSize
和maxBufferSize
<bindings> <webHttpBinding> <!-- The maxReceivedMessageSize and the maxBufferSize must both be specified as shown below--> <binding name="higherMessageSize" maxReceivedMessageSize ="2048000" maxBufferSize="2048000"/> </webHttpBinding> </bindings>
关于c# - 更改 DataServiceContext 中的最大消息大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718030/