Winforms et Webservice timeout [Résolu]

Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
- - Dernière réponse : calimer22
Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
- 6 sept. 2006 à 12:13
Bonsoir,

j'ai une application winforms qui appelle des webservices
mais bien sur mes webservice qui interrogent ma base SQL mettent parfois un peu de temps pour repondre ou plutot c'est SQL Serveur qui met du temps à repondre et là c'est le drame !!!
J'ai des timeout qui apparaissent

j'ai essayer de parametrer IIS pour qu'il attendent plus mais rien a faire
j'ai mis le timeout à 180 pour le temps du webservice dan le code et rien non plus

le code d'erreur qui m'est renvoyé est le suivant :

System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la demande. ---> System.Data.SqlClient.SqlException: Impossible de trouver la procédure stockée 'dbo.SP_GET_LISTE_ENQUETE_BY_USER'.
à System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
à System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
à System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
à System.Data.SqlClient.SqlDataReader.get_MetaData()
à System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
à System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
à System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
à System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
à System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
à DS_EnqueteTableAdapters.Tbl_ListeEnquetesTableAdapter.Fill(Tbl_ListeEnquetesDataTable dataTable, Nullable`1 USERID

Quelqu'un à une idée !!
Le process devrait durer entre 40 ou 50 secondes et ce timeout arrive à 30 secondes !!!

Merci de votre aidehttp://www.developpez.net/forums/showthread.php?p=1292101#post1292101
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
3
Merci
Salut,

Bon pour palier mon probléme j'ai fait les actions suivants :

Time out de reponse du webservice => augmenter
Webservice => refondu pour ne pas faire une simple utilisation d'un dataset  mais la gestion de la requête dans le code et je renvoie un dataset complet comme ci dessous
    public DataSet ListeEnqueteRechercheAvecStructureNew(Param_ListeEnquete liste)
    {

        string strSQL;
        strSQL = "";

            // Requete SQL
            strSQL = "SP_GET_ListeEnqueteRETOURManager " ;

         // Va chercher les informations sur la connexion
        InitializeComponent();
        //  Ouvre la connexion
        openSqlConnection.Open();

        if (openSqlConnection == null)
        {
            InitializeComponent();
            openSqlConnection.Open();
        }
        // on déclare le dataset
        DataSet ds = new DataSet();

        // crée la commande sql
        SqlCommand cmd = openSqlConnection.CreateCommand();

        // la commande a proprement parlé
        cmd.CommandText = strSQL;
        cmd.CommandType = CommandType.Text;
        // on se géne pas sur le timeout
        cmd.CommandTimeout = 300000;

        // création du DataAdapter
        SqlDataAdapter da = new SqlDataAdapter(cmd);

        // Chargement des infos
        da.Fill(ds);

        // on retourne le Dataset
        return ds;
}

et là je peux faire des requêtes longues y a pas de soucis

@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de calimer22
Messages postés
8
Date d'inscription
mercredi 10 décembre 2003
Dernière intervention
16 mai 2007
0
Merci
Bonjour,
Si ton problème est seulement le time-out, tu peux   le forcer côté serveur(service),en ajoutant dans  ta connection  SQL le paramètre "Connect Timeout=90". Avec ça tout doit marcher.
bonne chance
Commenter la réponse de estalex
Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
0
Merci
Bonjour,


dans le web.config du côté serveur j'ai bien mis cette option, cela donnait :
<connectionStrings>
name="
TESTConnectionString"
connectionString="
Data Source=CREDTEST;Initial Catalog=TEST_INDEX;Persist Security Info=True;User ID=toto;Password=connect;Connect Timeout=180"
providerName="
System.Data.SqlClient"
/>
</connectionStrings>

et pourtant cela me renvoyait le time out ou bout de 30 secondes

Il y a une option de configuration au niveau du Soap sur le time out de SQL ???

Merci











 
Commenter la réponse de calimer22
Messages postés
8
Date d'inscription
mercredi 10 décembre 2003
Dernière intervention
16 mai 2007
0
Merci
Bonjour,
Je pense que tu peux avoir un autre problème, car le timeout vient seulement si il y a de problemès avec la connection. Dans le cas contraire, il commence a envoyer les données via packets tcp. Donc pas de timeout.
--Dis moi, pendant  le temps d'attente, le serveur envoi des packets  tcp au  client?
Une autre possibilité peut être liée au message d'error :
 " System.Data.SqlClient.SqlException: Impossible de trouver la procédure stockée 'dbo.SP_GET_LISTE_ENQUETE_BY_USER'."
--Au cas où, ta procedure stocké est bien sous dbo?
Commenter la réponse de estalex
Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
0
Merci
Oui, la procédure est bien en dbo car parfois (si le temps est inférieur à 30secondes ) cela me renvoie mes 3500 voir 4000 lignes ...
Commenter la réponse de calimer22
Messages postés
10
Date d'inscription
jeudi 28 décembre 2000
Dernière intervention
8 mars 2007
0
Merci
Pour être plus précis j'ai refait tourner en reverifiant toutes les options (timeout / nom / ....)
et voilà ce que cela a donné

 System.Web.Services.Protocols.SoapException: Le serveur n'a pas pu traiter la demande. ---> System.Data.SqlClient.SqlException: Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.
   à System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   à System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   à System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   à System.Data.SqlClient.SqlDataReader.get_MetaData()
   à System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   à System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   à System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   à System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   à System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   à System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   à System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   à NewListeEnqueteTableAdapters.SP_GET_ListeEnqueteARPTableAdapter.Fill(SP_GET_ListeEnqueteARPDataTable dataTable, Nullable`1 ENQ_NUM, Nullable`1 DEE_NUM, String INP_CIVILITE, String INP_NOM, String INP_PRENOM, String ADR_LOCALITE, String ADR_CP, Nullable`1 DEE_PRIORITE, Nullable`1 DEE_URGENCE, String ENQ_DT_AFFECTATION, String ENQ_DT_RETOUR_CALCULE, String ENQ_DT_Planif, Nullable`1 ENQ_EMP_ID, String EEQ_CODE, Nullable`1 PRE_CODE, String CATRDV, Nullable`1 EMP_EQU_ID)

je crois que mon copier coller de hier soir était foireux sur mon libellé d'erreur pardon

mais en tout cas mon probléme est toujours là
merci de votre aide
Commenter la réponse de calimer22

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.