Entity Famework Data Service as a Windows Service how to change maxReceivedMessageSize

北慕城南 提交于 2019-12-25 04:04:28

问题


I'm trying to increase the maxReceivedMessageSize for my DataService. I've tried the solutions from these places:

  • https://malvinly.com/2011/05/09/wcf-data-services-and-maxreceivedmessagesize/
  • How do I setup config files for WCF Data Service (odata) with EF 6

and some other places I can't remember but I can't get it working. The DataService is not running for a Web Application but in a Windows Service. The app.config is currently looking like this:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" bindingConfiguration="Test"/>
    </protocolMapping>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <bindings>
      <basicHttpsBinding>
    <binding name="Test" maxBufferSize="10485760" maxReceivedMessageSize="10485760">
      <readerQuotas maxDepth="10485760" maxStringContentLength="10485760"
        maxArrayLength="10485760" maxBytesPerRead="10485760" maxNameTableCharCount="10485760" />
    </binding>
  </basicHttpsBinding>
    </bindings>
</system.serviceModel>

EDIT

I've updated the app.config content... Still can't figure out how this should be done.

EDIT

As recommended I've also set the readerQuotas without success


回答1:


After a while we've found a solution...

Initially we took the DataServiceHost class to host our Service which does not support these options. After using WebServiceHost to host the service it worked:

WebServiceHost webServiceHost = new WebServiceHost(typeof(EfoDataService), new Uri[] { });

//Https binding
WebHttpBinding httpsbinding = new WebHttpBinding()
{
    Security = { Mode = WebHttpSecurityMode.Transport },
    MaxReceivedMessageSize = 2097152,
    MaxBufferSize = 2097152,
    MaxBufferPoolSize = 2097152,
    TransferMode = TransferMode.Streamed
};

//adding https endPoint 
webServiceHost.AddServiceEndpoint(typeof(IRequestHandler), httpsbinding, secureBaseAddress);

It's a bit strange though since DataServiceHost does derive from WebServiceHost.



来源:https://stackoverflow.com/questions/48517725/entity-famework-data-service-as-a-windows-service-how-to-change-maxreceivedmessa

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!