1

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

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

我做了谷歌并在这里搜索,发现我应该在我的服务器配置上增加 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();

谢谢你的帮助!!

4

1 回答 1

1

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

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

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="2000000000" />
        </requestFiltering>
    </security>
</system.webServer>
于 2013-06-06T03:07:32.517 回答