calimer22
Messages postés10Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention 8 mars 2007
-
24 août 2006 à 22:45
calimer22
Messages postés10Date d'inscriptionjeudi 28 décembre 2000StatutMembreDerniè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 !!!
calimer22
Messages postés10Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention 8 mars 2007 6 sept. 2006 à 12:13
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)
{
// 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
estalex
Messages postés8Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention16 mai 2007 25 août 2006 à 14:07
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
calimer22
Messages postés10Date d'inscriptionjeudi 28 décembre 2000StatutMembreDernière intervention 8 mars 2007 25 août 2006 à 14:16
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 ???
estalex
Messages postés8Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention16 mai 2007 25 août 2006 à 15:18
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?