IIS sous win 2003 et sous win 2008

Fermé
yaaak - 30 juil. 2010 à 11:10
 yaaak - 30 juil. 2010 à 15:31
Bonjour,



J'ai une appli qui tournait normalement jusqu'à hier. C'est une application asp.net avec une base de données sql server 2008 enterprise edition sur un server windows 2008 standard edition.

J'ai un message d'erreur :

" Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas"

Cette appli, si je la mets sur un serveur web sous windows 2003, topurne sans aucun problème.

Première conclusion :
à priori, le serveur sql n'est pas en cause puisqu'il répond aux requêtes issues de iis sous win 2003.

Je cherche depuis hier une idée pour résoudre ce problème en vain.

Merci pour toute info
A voir également:

6 réponses

Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
30 juil. 2010 à 11:16
ton message il est au niveau de la page web du client?

une cause possible pourrait être un probleme de communication entre le serveur web et le serveur SQL (firewall par exemple)
mais tu aurais plus probablement une erreur asp de connection failed SQL...

la tu as un timeout, vérifie les log d'évenement systeme et applicatif, voir s'il n'y a pas un message .NET étrange.
0
oui le message apparait au niveau de la page web quand c'est iis sous win2008 qui est sollicité.

Les messages dans les logs ne différent pas de ce que j'ai sur la page d'erreur.

System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +248
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +656
System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) +313
System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() +147

Seulement, comme ca tourne sous iis/win2003, je me dis que le code c# n'est pas mauvais lol.

Je soupçonne un paramétrage dans le web.config qui sous iis/2003 ne gêne pas alors que sous iis/2008, il fait planter l'appli.

Merci en tout cas pour la réponse.

Je continue la recherche
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
30 juil. 2010 à 12:09
Ok, donc il s'agit bien d'un probleme SQL/IIS, pas coté IIS seulement

est-ce toute la trace du message?
peux-tu me dire s'il s'agit d'un message au moment de l'ouverture de la connexion ou lors de l'exécution d'une requete

peux-tu donner le code source du bloc correspondant au plantage?

vérifie aussi les credential SQL dans le web.config.
0
bonjour et merci beaucoup pour ton aide

alors la réponse

Le même web config me sert actuellement pour faire tourner l'appli sous un IIS/serveur windows 2003 "en dépannage".

Donc je ne pense pas que les credentials soient en cause. C'est lees memes qui marchent maintenant sous iis/win2003

L'erreur survient au moment de l'établissement de la connexion avec sql server.

[SqlException (0x80131904): 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.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +248
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +656
System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) +313
System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() +147
System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean& marsCapable) +133
System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) +640
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +260
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +2445370
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +2445224
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +354
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +703
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +54
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +2414776
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +92
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1657
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +84
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +1645767
System.Data.SqlClient.SqlConnection.Open() +258
NBS.Calife.DataAccess.DataHelper.ExecuteReaderStoredProcedure(String storedProcedureName, IEnumerable'1 parameters, Bases database, Boolean fillParameters) in E:\wsCalife\NBS.Calife\NBS.Calife\NBS.Calife.DataAccess\DataHelper.cs:344
NBS.Calife.DataAccess.DataHelper.ExecuteReaderStoredProcedure(String storedProcedureName, IEnumerable'1 parameters, Bases database) in E:\wsCalife\NBS.Calife\NBS.Calife\NBS.Calife.DataAccess\DataHelper.cs:328
NBS.Calife.Biz.AccessLoader.CheckAccess(String login, String password, Int32& erreur, Int32& id, Boolean& changepwd, Boolean& enableChangePwd) in E:\wsCalife\NBS.Calife\NBS.Calife\NBS.Calife.Biz\Access\AccessLoader.cs:65


Le même code fonctionne très bien sous iis/win2003

C'est bien celà mon mystère "problème".....

Merci encore et bonne journée
La mienne n'est pas terminée de sitôt lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
30 juil. 2010 à 12:36
le point le plus bas de la pile de trace est :
NBS.Calife.Biz.AccessLoader.CheckAccess(String login, String password, Int32& erreur, Int32& id, Boolean& changepwd, Boolean& enableChangePwd) in E:\wsCalife\NBS.Calife\NBS.Calife\NBS.Calife.Biz\Access\AccessLoader.cs:65

c'est donc l'appel a cette procedure qui pose un probleme.

si je te parlais des credential c'est que tout ce que j'ai pu trouver sur le web pointe vers ca.

si par exemple ta chaine de connexion utilise "Integrated SSPI=True" sous windows 2008 il faut bien être sur que que le compte qui fait tourner le pool d'application ait les droits d'accès a la base (par défaut c'est NETWORK SERVICE et il n'a pas les droit a la base de données)

ce qui est gênant c'est que cela se soit arrêté de fonctionner du jour au lendemain... j'aurais bien dis de vérifier que le compte n'ait pas un probleme (password expiré, compte bloqué, ou certificat expiré si tu utilise les certificats)

mais si ca marche sur 2003 avec les meme fichier de conf, sur le meme serveur SQL, la seule chose qui a pu se passer c'est un changement de config au niveau IIS2008 (application d'un patch de sécurité microsoft par exemple)

si ce n'est pas déja fait, active les traces de sécurité sur le serveur SQL et IIS2008 fais ensuite des tentative de connection, et regarde si tu n'as pas des remontée d'acces denied ou de probleme dans la log sécurité des serveurs.
0
Merci encore
alors pour repondre aux questions :

si par exemple ta chaine de connexion utilise "Integrated SSPI=True" sous windows 2008 il faut bien être sur que que le compte qui fait tourner le pool d'application ait les droits d'accès a la base (par défaut c'est NETWORK SERVICE et il n'a pas les droit a la base de données)

non je suis à false pour ce paramètre


ce qui est gênant c'est que cela se soit arrêté de fonctionner du jour au lendemain... j'aurais bien dis de vérifier que le compte n'ait pas un probleme (password expiré, compte bloqué, ou certificat expiré si tu utilise les certificats)

non, le meme password fonctionne avec iis/2003 sans rien modifier

j'utilise pas de certificats

je n'ai pas appliqué de patch depuis bien deux semaines au moins.

j'ai relu les logs de sql et iis mais je ne vois rien d'anormal pour le moment

je nage en plein choucroute

merci encore
0