Windows服务(413)请求实体太大

时间:2017-03-02 18:26:54

标签: c# wcf app-config

请不要将其删除为副本 我有一个Windows服务,我将一组对象传递给。当数组包含少于150个对象时,它可以成功运行。当我传递超过150个对象时,我得到(413)请求实体太大错误 我已经尝试过有关readerQuotas节点值和maxReceivedMessageSize的其他文章的反馈,但我仍然收到错误,我仍然坚持我仍然做错了。 这是windows服务的app.config:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
            <readerQuotas maxDepth="2000000000"
                  maxStringContentLength="2000000000"
                  maxArrayLength="2000000000" 
                  maxBytesPerRead="2000000000" 
                  maxNameTableCharCount="2000000000" />
            </binding>
        </basicHttpBinding>
        <wsHttpBinding>
            <binding name="wsHttpBindingNoSecurity" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
                <security mode="None">
                    <transport clientCredentialType="None"/>
                    <message establishSecurityContext="false" negotiateServiceCredential="false"/>
                </security>
                <readerQuotas maxDepth="2000000000"
                  maxStringContentLength="2000000000"
                  maxArrayLength="2000000000" 
                  maxBytesPerRead="2000000000" 
                  maxNameTableCharCount="2000000000" />
            </binding>
        </wsHttpBinding>
        <mexHttpBinding>
            <binding name="mexHttpBinding"/>
        </mexHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="Service1Behavior">
                <serviceMetadata httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="SE.Responder.Integration.AmiOutboundService.AmiObService" behaviorConfiguration="Service1Behavior">
            <endpoint address="wsHttp" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingNoSecurity" contract="SE.Responder.Integration.AmiOutboundService.IAmiObService">
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>
            <endpoint address="basicHttp" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" name="basicHttp" contract="SE.Responder.Integration.AmiOutboundService.IAmiObService"/>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:8732/SE.Responder.Integration.AmiOutboundService/AmiObService/"/>
                </baseAddresses>
            </host>
        </service>
    </services>
</system.serviceModel>

这是将数据传递给Windows服务的可执行文件的app.config:

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_IAmiObService" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" >
        <readerQuotas maxDepth="2000000000"
                  maxStringContentLength="2000000000"
                  maxArrayLength="2000000000" 
                  maxBytesPerRead="2000000000" 
                  maxNameTableCharCount="2000000000" />
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:8732/SE.Responder.Integration.AmiOutboundService/AmiObService/AmiOBService" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IAmiObService" contract="AmiObService.IAmiObService" name="WSHttpBinding_IAmiObService" />
</client>

1 个答案:

答案 0 :(得分:0)

在查看了遇到此问题的应用程序的源代码后,我发现wcf服务是在C#代码中托管的。然后我在代码中应用了修复程序,如下面的堆栈溢出问题所述, MaxReceivedMessageSize in WCF Hosted Service in console application, 具体如下, var wsHttpBinding = new WSHttpBinding(); wsHttpBinding.MaxReceivedMessageSize = int.MaxValue;                 Service.AddServiceEndpoint(typeof(TInterfaceContract),wsHttpBinding,EndpointAddress);

纠正了这个问题。