4 votes

WCF Timeout Exception ! Une exception de type 'System.TimeoutException' s'est produite dans mscorlib.dll.

Je consomme un service wcf dans une application web asp.net les fonctions du service wcf prennent parfois plus d'une minute pour répondre, auquel cas l'exception est levée. je ne suis pas sûr de savoir comment augmenter ce délai de requête, j'ai essayé sur le fichier de configuration wcf mais ça ne marche pas dois-je le faire du côté de mon application web aussi ? si oui, comment ? aidez-moi s'il vous plaît !

le détail des exceptions : Informations supplémentaires : Le canal de demande s'est arrêté en attendant une réponse après 00:00:59.8689077. Augmentez la valeur du délai d'attente passée à l'appel à Request ou augmentez la valeur de SendTimeout sur le Binding. Le temps alloué à cette opération peut avoir été une partie d'un délai plus long.

wcf web.config :

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/>
    </httpModules>
  </system.web>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding receiveTimeout="00:05:00" sendTimeout="00:05:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
          <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>

      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="524288000"/>
        </requestFiltering>
      </security>

    <modules runAllManagedModulesForAllRequests="true">
      <remove name="ApplicationInsightsWebTracking"/>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"
        preCondition="managedHandler"/>
    </modules>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>

</configuration>

asp.net webapp web.config :

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>

    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  <pages>
      <controls>
        <add tagPrefix="gmaps" namespace="Subgurim.Controles" assembly="GMaps" />
      </controls>
    </pages></system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
  <system.webServer>

    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="524288000"/>
        </requestFiltering>
     </security>

    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>
  </system.webServer>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:35800/Service1.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>
<appSettings>
    <!-- Add your Google Maps API Key from Google -->
    <add key="googlemaps.subgurim.net" value="" />
    <!-- And add your Commercial Key from Subgurim if you have purchased one -->
    <add key="googlemaps.subgurim.net_Commercial" value="" />
  </appSettings></configuration>

3voto

MikeT Points 139

Essayez également de définir le délai d'attente dans votre configuration web asp.net.

Voici un exemple de l'un de mes consommateurs, qui utilise des données en continu et pour lequel le délai d'attente est vital.

<system.serviceModel>
  <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IStreamed" transferMode="Streamed" messageEncoding="Mtom"  maxReceivedMessageSize="67108864" maxBufferSize="65536"
              closeTimeout="00:01:00" openTimeout="00:01:00"
              receiveTimeout="00:10:00" sendTimeout="00:01:00"/>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:#####/streamed.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IStreamed"
            contract="SyncSVC.IStreamed" name="BasicHttpBinding_IStreamed" />
    </client>
</system.serviceModel>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X