2014-05-16 125 views
0

我有2個WCF服務一起工作。一個是類庫,另一個是web服務。WCF ERROR-(413)請求實體太大

它的工作很好,直到現在。但如果我嘗試發送大量的數據,它把我413錯誤...

An exception was thrown: The remote server returned an error: (413) Request Entity Too Large.

下面的web.config文件 -

對於Class圖書館 -

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
    <add key="ConnectionString" value="Server=NSIT-DEV02\NSITDEV02;uid=sa;pwd=ahnaf2012;database=WBD Live"/> 
    <add key="JobLocation" value ="\\development01\DataKaziHossain\WBD New\Test\JOBS\"/> 

    <add key="SMTP" value ="NSIT-EXCH01"/> 
    <add key="BookingEmailFrom" value ="[email protected]"/> 
    <add key="BookingEmailToWBD" value ="[email protected]; [email protected]; [email protected]"/> 

    <add key="SavedJobEmail" value ="[email protected]"/> 
    <add key="ProblemLogEmailToWBD" value ="[email protected]"/> 

    <add key="BookedTemplates" value ="C:\DataKaziHossain\Wb WCF\JSONWebService\JsonWeb\Templates\InspectionBookedTemplate.htm"/> 
    <add key="BettyBookedTemplates" value ="C:\DataKaziHossain\Wb WCF\JSONWebService\JsonWeb\Templates\BETTY INSPECTION BOOKED.html"/> 
    </appSettings> 
    <connectionStrings/> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    <!-- 
     The <authentication> section enables configuration 
     of the security authentication mode used by 
     ASP.NET to identify an incoming user. 
    --> 
    <authentication mode="Windows"/> 
    <!-- 
     The <customErrors> section enables configuration 
     of what to do if/when an unhandled error occurs 
     during the execution of a request. Specifically, 
     it enables developers to configure html error pages 
     to be displayed in place of a error stack trace. 

     <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="403" redirect="NoAccess.htm" /> 
     <error statusCode="404" redirect="FileNotFound.htm" /> 
     </customErrors> 
    --> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
    </system.web> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.serviceModel> 
    <services> 
     <service name="JSONWebService.Service1" behaviorConfiguration="JSONWebService.Service1Behavior"> 
     <endpoint address="../Service1.svc" binding="webHttpBinding" contract="JSONWebService.IService1" behaviorConfiguration="webBehaviour"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="JSONWebService.Service1Behavior"> 
      <!-- 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="webBehaviour"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

對於網絡服務客戶端 -

<?xml version="1.0"?> 
<configuration> 
    <!-- 
     Note: As an alternative to hand editing this file you can use the 
     web admin tool to configure settings for your application. Use 
     the Website->Asp.Net Configuration option in Visual Studio. 
     A full list of settings and comments can be found in 
     machine.config.comments usually located in 
     \Windows\Microsoft.Net\Framework\vx.x\Config 
    --> 
    <configSections> 

    </configSections> 
    <appSettings> 
    <add key="ConnectionString" value="Server=NSIT-DEV02\NSITDEV02;uid=sa;pwd=ahnaf2012;database=WBD Live"/> 
    <add key="JobLocation" value ="\\development01\DataKaziHossain\WBD New\Test\JOBS\"/> 
    <add key="SMTP" value ="NSIT-EXCH01"/> 
    <add key="BookingEmailFrom" value ="[email protected]"/> 
    <add key="BookingEmailToWBD" value ="[email protected]; [email protected]; [email protected]"/> 

    <add key="SavedJobEmail" value ="[email protected]"/> 
    <add key="ProblemLogEmailToWBD" value ="[email protected]"/> 

    <add key="BookedTemplates" value ="C:\DataKaziHossain\Wb WCF\JSONWebService\JsonWeb\Templates\InspectionBookedTemplate.htm"/> 
    <add key="BettyBookedTemplates" value ="C:\DataKaziHossain\Wb WCF\JSONWebService\JsonWeb\Templates\BETTY INSPECTION BOOKED.html"/> 
    </appSettings > 
    <connectionStrings/> 
    <system.web> 
    <!-- 
     Set compilation debug="true" to insert debugging 
     symbols into the compiled page. Because this 
     affects performance, set this value to true only 
     during development. 
    --> 
    <compilation debug="true"> 
     <assemblies> 
     <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 
    </compilation> 
    <!-- 
     The <authentication> section enables configuration 
     of the security authentication mode used by 
     ASP.NET to identify an incoming user. 
    --> 
    <authentication mode="Windows"/> 
    <!-- 
     The <customErrors> section enables configuration 
     of what to do if/when an unhandled error occurs 
     during the execution of a request. Specifically, 
     it enables developers to configure html error pages 
     to be displayed in place of a error stack trace. 

     <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="403" redirect="NoAccess.htm" /> 
     <error statusCode="404" redirect="FileNotFound.htm" /> 
     </customErrors> 
    --> 
    <pages> 
     <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </controls> 
    </pages> 
    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 
    </system.web> 
    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="WarnAsError" value="false"/> 
     </compiler> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="OptionInfer" value="true"/> 
     <providerOption name="WarnAsError" value="false"/> 
     </compiler> 
    </compilers> 
    </system.codedom> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules> 
     <remove name="ScriptModule"/> 
     <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </modules> 
    <handlers> 
     <remove name="WebServiceHandlerFactory-Integrated"/> 
     <remove name="ScriptHandlerFactory"/> 
     <remove name="ScriptHandlerFactoryAppServices"/> 
     <remove name="ScriptResource"/> 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </handlers> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding appliesTo="v2.0.05727" xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding maxReceivedMessageSize="2000000" name="" maxBufferSize="2000000"> 
      <readerQuotas maxStringContentLength="2000000"/> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="JSONWebService.Service1" behaviorConfiguration="ServiceBehavior" > 
     <!-- Service Endpoints --> 
     <endpoint address="" binding="webHttpBinding" contract="JSONWebService.IService1" behaviorConfiguration="webBehaviour" > 

      <!-- 
       Upon deployment, the following identity element should be removed or replaced to reflect the 
       identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
       automatically. 
      --> 
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     <endpoint address="basic" binding="webHttpBinding" contract="JSONWebService.IService1" behaviorConfiguration="webBehaviour"/> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBindingSettings" contract="JSONWebService.IService1" /> 


     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehavior" > 
      <!-- 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="true"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webBehaviour"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
      <binding openTimeout="00:01:00" receiveTimeout="05:00:00" 
       sendTimeout="05:00:00" maxReceivedMessageSize="2147483647" 
       maxBufferPoolSize="2147483647777" messageEncoding="Text"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647" /> 
     </binding> 
     </basicHttpBinding> 

    </bindings> 


    </system.serviceModel> 



</configuration> 

任何幫助將非常感激。

謝謝

+0

你好,你有沒有找到一個解決這個?我已經嘗試了我可以在網上找到的每一個解決方案,沒有任何工作... – Bassie

回答

4

您遇到WCF對郵件大小的默認限制。要提高限制,請在web.config文件(服務器端)中使用maxReceivedMessageSize屬性。

<system.serviceModel> 
    <bindings> 
    <basicHttpBinding> 
     <binding maxReceivedMessageSize="10000000"> 
    </basicHttpBinding> 
    </bindings> 
</system.serviceModel> 
+0

你是指在課堂圖書館? – user2434772

+0

是的,我的意思是在您的服務器端Web服務的web.config。所以是的,你的班級圖書館。在該web.config中已經定義了一個system.serviceModel節,只需將它添加到它。希望工程。 – BilalAlam

+0

嗨,我已經在下添加了,但它沒有解決我的問題。非常感謝你幫助我。 – user2434772

1

這可能真的很晚,但對於其他人也卡住了。

最初的問題是由什麼BilalAlam描述解決(增加maxRecievedMessageSize),但你的問題是綁定需要通過在端點bindingConfiguration的結合被捆綁到端點。

<bindings> 
    <webHttpBinding> 
    <binding maxReceivedMessageSize="2147483647" name="NAMETOTIEENDPOINT"> 
     <readerQuotas maxStringContentLength="2000000"/> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<services> 
    <service> 
    <endpoint address="basic" bindingConfiguration="NAMETOTIEENDPOINT" binding="webHttpBinding" contract="JSONWebService.IService1" /> 
    </service> 
</services>