使用WCF OData客户端的RequestEntityTooLarge

时间:2013-06-05 23:35:06

标签: c# wcf entity-framework ado.net odata

我有一个使用Microsoft.Data.OData服务的WCF实体服务,在IIS中使用WinForms客户端托管。

我从WinForms桌面应用程序查询客户端,并进行更新和删除。一切正常,直到数据大小达到某一点 - 我认为它是64k,然后当我在客户端上尝试SaveChanges()时收到'RequestEntityTooLarge'错误。

我做了google并在这里搜索,发现我应该在我的服务器配置上增加maxReceiveMessageSize。我已经这样做了,还有其他一些事情无济于事。超过一定大小的消息仍然失败一次。

以下是我的服务的web.config:

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" />
  </system.web>
    <bindings>
      <basicHttpBinding>
        <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647" />
      </basicHttpBinding>
    </bindings>

以下是客户端上的配置:

<bindings>
  <basicHttpBinding>
    <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
      maxReceivedMessageSize="2147483647" />
  </basicHttpBinding>
</bindings>

在客户端上,我非常简单地实例化它:

            _context = new Notification_Entities(new Uri(_oDataServiceURL));

当我打电话给它时失败了:

 _context.SaveChanges();

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

Microsoft.Data.OData与任何<bindings />设置完全无关。 <httpRuntime maxRequestLength="x" />会有所帮助。这将增加.net限制。但是IIS上还有另一个上传限制。

您需要使用以下内容来提升IIS限制。

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="2000000000" />
        </requestFiltering>
    </security>
</system.webServer>