59 messaggi dal 08 giugno 2010
SALVA A TUTTI,
STO UTILIZZANDO UN SERVIZIO WCF IL QUALE FORNISCE I DATI AL CLIENT WPF IL TUTTO IN AMBIENTE IIS7.
FUNZIONA TUTTO PERFETTAMENTE, SE NON FOSSE PER IL FATTO CHE SUPERATE LE CIRCA 7000 RIGHE DI UNA TABELLA MI DA IL SEGUENTE ERRORE:

System.ServiceModel.ComunicationExeption:
Il server non è stato in grado di fornire una risposta significativa. Ciò potrebbe essere causato da un contratto non corrispondente, un arresto prematuro della sessione o un errore server interno.

HO PROVATO AD AUMENTARE I VALORI MAXRECIVE ECC...MA NULLA VARIA.
STAVO PENSANDO CHE FORSE POTEVA BLOCCARMI LO STESSO IIS

IL CODICE RELATIVO AL CLIENT WPF:

<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IService1" closeTimeout="00:05:00"
openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="4147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://127.0.0.1:83/Service1.svc" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IService1" contract="WG7_Service.IService1"
name="WSHttpBinding_IService1">
<identity>
<servicePrincipalName value="host/pc-frenz" />
</identity>
</endpoint>
</client>

IL CODICE RELATIVO AL SERVICE WCF:

<basicHttpBinding>

<binding name="MyBinding"
maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
<readerQuotas
maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="16400" maxBytesPerRead="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="IrideService.Service1Behavior" name="WG7_Service.Service1">
<endpoint address="" binding="wsHttpBinding" contract="WG7_Service.IService1">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

</service>
</services>
437 messaggi dal 08 febbraio 2009
Ciao.

Purtroppo non sono molto esperto di queste cose, però guardando l'errore direi che gli errori potrebbero essere due:

1) Il contratto del servizio (server) è diverso da quello del client
2) Il server, durante una chiamata, esce con errore e quindi non risponde al client (per esempio se nell'entry-point referenzi una DLL non trovata nel server


Ripeto: Questo è quello che guarderei io se mi desse lo stesso errore, però non sono assolutamente sicuro! (potrei aver detto anche delle cavolate)
59 messaggi dal 08 giugno 2010
quindi cosa potrei fare?
E' più probabile che vada in timeout l'esecuzione lato server. Normalmente in http la risposta è buffered, quindi viene tutta preparata e poi mandata. Se poi hai abilitato l'integrazione con asp.net ci sono i vari parametri di risposta e tempi da rispettare.
Con fiddler potresti vedere che risposta http ti viene data e capire meglio, oppure abilitando il tracing.
Ad ogni modo, lavorarei con un'altra via. Se usi http e vai in timeout, è meglio che spezzetti il caricamento delle righe. In primo luogo mi sembra strano che l'utente debba vedersele tutte 7mila e secondo se qualcosa va storto ti tocca ricominciare.

Ciao

Il mio blog
Homepage
59 messaggi dal 08 giugno 2010
a mio parere sono errati i file di comunicazione (.config) anche perchè mi è gia capitato l'errore di timeout ed è completamente diverso..

anch'io caricherei le righe a blocchi, il problema è che sono prodotti di magazzino; e sulla maschera il cliente deve scegliere fra tutti i 30.000 prodotti che ha appunto in magazzino.


HELP ME
59 messaggi dal 08 giugno 2010
sono riuscito finalmente a creare una configurazione "decente" e l'errore si è tramutato in:

Eccezione generata dal formattatore nel tentativo di deserializzare il messaggio: Errore durante il tentativo di deserializzare il parametro http://tempuri.org/:Get_List_CodiciSupp_LightResult. Messaggio InnerException: 'Errore durante la deserializzazione dell'oggetto di tipo System.Collections.Generic.List`1[[WG7_Client.WG7_Service.BL_CodiciSupp_Light, WG7_Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. Fine del file imprevista.
Gli elementi seguenti non sono stati chiusi: Um, BL_CodiciSupp_Light, Get_List_CodiciSupp_LightResult, Get_List_CodiciSupp_LightResponse, Body, Envelope. Riga 1, posizione 1310721.'. Per ulteriori dettagli, vedere InnerException.

AIUUTOO!!
4 messaggi dal 15 settembre 2010
Ciao,

vorrei sapere se ancora hai il problema o se lo hai risolto e ,se lo hai risolto, in che modo lo hai risolto.

A me è capitato lo stesso problema e ho notato che si verifica solo quando c'è una quantità di dati elevata nelle tabelle del database.

Per quanto riguarda il mio problema, ho una tabella legata ad altre 4 o 5 tabelle mediante entity framework (per essere preciso sto parlando di .NET 3.5).

Siccome fino ad una certa quantità di dati non è possibile trasferire con il WCF, ho implementato nel mio applicativo client/server una paginazione, ovvero se ci sono sul database 500 record, il client ne richiede 50 per volta.

Però, anche in questo caso, con una quantità di dati elevata in tabella si verifica lo stesso errore.

Nell'eseguire da esempio la query LINQ to ENTITIES:

var lista = _context.ElementiSet.Where(e=>e.Codice<50).ToList();

per restituire i dati al client, credo che il WCF serializzi tutti i dati e non solo quelli che si stanno inviando.
Mi spiego meglio.
Io ovviamente sto inviando solo la variabile lista, che è di 50 elementi. Ora il problema si verifica solo se ho più di 500 elementi in tabella ma non si verifica se ne ho 499, il chè mi lascia pensare che c'è qualcosa che non quadra...

Spero che queste valutazioni ci aiutino ad esserci utili a vicenda.

saluti
547 messaggi dal 24 maggio 2002
Contributi
Mi intrometto perchè mi viene in mente una cosa: avete provato debuggare il solo servizio per vedere esattamente cosa restituisce? e se riesce a restituire quanto ci si aspetta?

"Fine del file imprevista" mi fa pensare al fatto che arrivi qualcosa ma non è ben formattato (non completo).

Anche per il dubbio dei "500 elemeti" se si ha a disposizione l'output del servizio si potrebbe analizzare la cosa.

Marco.
Modificato da makbox il 15 settembre 2010 18.18 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.