Domanda

Im usando WCF per l'invio di tutti i tipi di messaggi e questo messaggio nella perticular è di circa 3200000 byte più alcune stringhe e le intestazioni. La grande paylode è un oggetto serializzato recuperato dall'host attraverso un altro servizio di configurazione whos ho cercato di imitare in ogni aspetto.

Im usando vincolante netTcp per le prestazioni e che stiamo usando un sacco di callback. Ho impostato tutte le opzioni che posso trovare al livello massimo su entrambi i lati client e server.

<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_IEventMissionService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
      <security mode="None" />
    </binding>
    </bindings>
    <client>
      <endpoint address="net.tcp://localhost:7359/EventMissionMap" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IEventMissionService" contract="RXEventMissionMapService.IEventMissionService" name="NetTcpBinding_IEventMissionService" />
      </client>
  </system.serviceModel>

ottengo questo messaggio di errore non descritto sul client:

  

La connessione socket è stata interrotta.   Questo potrebbe essere causato da un errore   l'elaborazione messaggio o una ricezione   timeout superamento dal telecomando   host o una rete sottostante   questione delle risorse. Local timeout presa   era '00: 00:. 59,9,979996' millions

E exteption interno:

  

Una connessione esistente veniva chiusa forzatamente dall'host remoto

traccia esecuzione porta un po 'più di informazioni (parte superiore della traccia dello stack):

  

System.ServiceModel.Channels.SocketConnection.Write (Byte []   tampone, Int32 compensato, dimensioni Int32,   Booleano immediato, TimeSpan timeout)   Cima alla pila traccia exteption interno:   System.Net.Sockets.Socket.Send (Byte []   tampone, Int32 compensato, dimensioni Int32,   SocketFlags socketFlags)

Top dello stack trace eccezione interna:

  

System.Net.Sockets.Socket.Send (Byte []   tampone, Int32 compensato, dimensioni Int32,   SocketFlags socketFlags)

Se ho impostato il carico utile a nulla (non inviare l'oggetto 3.2 MB) il messaggio passa attraverso senza tante storie.

Può il fatto che ha origine oggetto da un altro servizio ha qualcosa a che con il mio problema? Ai miei occhi il problema è la dimensione del messaggio, ma aumentando le opzioni nella configurazione non mi ha aiutato finora.

Ho cercato di serie sul client senza fortuna. Utilizzando i risultati in streaming nel passaggio di richiesta / respons o la rimozione di tutte le richiamate ...

Tutte le idee?

È stato utile?

Soluzione

mi sbagliavo !! I cambiamenti che ho fatto sui livelli di configurazione sul lato host era su un servizio completamente diverso. Massimizzare il buffer di formati e dimensioni dei messaggi ha fatto il trucco! Im non realmente sicuro che uno è quello che ha reso il lavoro. Posso solo raccomandare a tutti voi che hanno problemi simili a guardare MaxBufferSize, MaxReceivedMessageSize, ReaderQuotas-> MaxArrayLength e un po 'di tempo fuori le impostazioni sia sul host e lato client. Anche per massimizzare l'maxItemsInObjectGraph nel comportamento di servizio sul lato host.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top