413请求实体太大错误 - WCF服务

时间:2021-05-15 20:29:32

i have a wcf services, when i put request message which large data (i have a request include base64 string, and this request is a long text)
i get this error "413 Request Entity Too Large".
Help me to call this services.
Here is my wcf config

我有一个wcf服务,当我把请求消息的大数据(我有一个请求包括base64字符串,这个请求是一个长文本)我得到这个错误“413请求实体太大”。帮我打电话给这项服务。这是我的wcf配置

<?xml version="1.0"?>

<system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <httpRuntime maxRequestLength="2097150"/>
</system.web>
<system.serviceModel>
    <services>
        <service behaviorConfiguration="ServiceBehaviour" name="ApiFrame.ApiFrame">
            <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
             contract="ApiFrame.IApiframe" />
            <endpoint address="soap" binding="basicHttpBinding" contract="ApiFrame.IApiframe" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehaviour">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="jsonBehavior">
                <enableWebScript/>
                <!-- use JSON serialization -->
            </behavior>
            <behavior name="xmlBehavior">
                <webHttp/>
                <!-- use XML serialization -->
            </behavior>
            <behavior name="web">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <!--<serviceHostingEnvironment multipleSiteBindingsEnabled="false"/>-->
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
        <webHttpBinding>
            <binding
              maxBufferPoolSize="2147483647"
              maxReceivedMessageSize="2147483647"
              maxBufferSize="2147483647" transferMode="Streamed">
            </binding>
        </webHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://10.16.8.54/T24WebServices/Service.asmx"
            binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
            contract="ConnectT24_54.ServiceSoap" name="ServiceSoap" />
    </client>
</system.serviceModel>

Here is my client application configuration:

这是我的客户端应用程序配置:

<?xml version="1.0"?>

<connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
</connectionStrings>

<system.web>
    <compilation debug="true" targetFramework="4.0" />

    <httpRuntime requestValidationMode="2.0" maxRequestLength="2147483647"/>

    <pages validateRequest="false">
    </pages>
    <authentication mode="Forms">
        <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
                 enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
                 maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                 applicationName="/" />
        </providers>
    </membership>

    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
        </providers>
    </profile>

    <roleManager enabled="false">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
        </providers>
    </roleManager>

</system.web>

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>

    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IApiframe" closeTimeout="00:01:00" openTimeout="00:01:00"
            receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
            bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
                <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

            </binding>
        </basicHttpBinding>

    </bindings>
    <client>
        <endpoint address="http://localhost:10832/ApiFrame.svc/soap"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IApiframe"
          contract="ApiServices.IApiframe" name="BasicHttpBinding_IApiframe" />
    </client>
</system.serviceModel>

1 个解决方案

#1


0  

You increased the size of the properties of the binding, but you never assigned that binding to the endpoint, so WCF uses the default values for the specified binding. To resolve this, use the bindingConfiguration attribute on the <endpoint> element in your service's config, like this:

您增加了绑定属性的大小,但您从未将绑定分配给端点,因此WCF使用指定绑定的默认值。要解决此问题,请在服务配置中的 元素上使用bindingConfiguration属性,如下所示:

<endpoint address="soap" 
          binding="basicHttpBinding" 
          bindingConfiguration="ServiceSoap"
          contract="ApiFrame.IApiframe" />

Note that your client config already assigns the specified binding to the client endpoint.

请注意,您的客户端配置已将指定的绑定分配给客户端端点。

#1


0  

You increased the size of the properties of the binding, but you never assigned that binding to the endpoint, so WCF uses the default values for the specified binding. To resolve this, use the bindingConfiguration attribute on the <endpoint> element in your service's config, like this:

您增加了绑定属性的大小,但您从未将绑定分配给端点,因此WCF使用指定绑定的默认值。要解决此问题,请在服务配置中的 元素上使用bindingConfiguration属性,如下所示:

<endpoint address="soap" 
          binding="basicHttpBinding" 
          bindingConfiguration="ServiceSoap"
          contract="ApiFrame.IApiframe" />

Note that your client config already assigns the specified binding to the client endpoint.

请注意,您的客户端配置已将指定的绑定分配给客户端端点。