commun connection timed out
Sur le serveur de production, parfois, au hasard d'échec de la connexion à la base de données ORacle. Je reçois beaucoup de
Oracle.DataAccess.Client.OracleException Commun de demande de connexion timed out à Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Objet de la src, de la Chaîne de procédure, Boolean bCheck, Int32 isRecoverable)
chez Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Objet src)
chez Oracle.DataAccess.Client.OracleConnection.Open()
au ws.DataConnection() dans le chemin d'accès.
J'ai cherché des solutions, mais pas de chance. Il est étrange que l'Exception n'a pas d'Identificateur comme Ora-123... je l'utilise OracleDataAccess client. Parfois, ce problème est de 5 à 10 secondes, parfois, je dois redémarrer IIS (6.1, Windows Server 2008 R2) pour résoudre le problème. Est frustrant... je ne peux pas définir de mise en commun=faux parce que nous avons un grand site web. Toutes les solutions?
OriginalL'auteur Coder | 2013-12-03
Vous devez vous connecter pour publier un commentaire.
La cause la plus commune de ce que je suis au courant, ne parvient pas à traiter correctement les IDisposable objets associés à Oracle.DataAccess.Client.
Il y a probablement un peu de code que vous avez là-bas qui n'est pas correctement l'élimination de certains objets. Ce sera la cause de Oracle à s'accrocher à des connexions qui ne sont pas en cours d'utilisation ce qui vous exécuter de connexions dans le pool. Redémarrer IIS de la résoudre, parce qu'il tue toutes ces connexions.
Examen de votre code avec soin et assurez-vous que tous les IDisposable objets sont correctement éliminés ou encapsulé dans l'aide de relevés.
OriginalL'auteur Nick Zimmerman
Les plus courantes des problèmes de connexion que j'ai vu sont:
Un autre site qui pourrait aider est celui-ci: http://blog.ilab8.com/2011/09/02/odp-net-pooling-and-connection-request-timed-out/
OriginalL'auteur drew_w
La clé est de les appeler .Dispose() sur votre DbContext et/ou assurez-vous que votre conteneur de l'appelant .Dispose() pour vous (par substitution de céder et de s'assurer que pour chaque nouveau DbContext vous avez un appel correspondant .Dispose()).
Vous aimeriez l'utiliser le destructeur ~MyDbContext() comme un rapide hack juste pour vérifier que l'appelant Dispose() résoudre le problème où votre application est en laissant les connexions ouvertes (c'est à dire de ne pas appeler dispose() sur votre DbContext).
Il semble qu'avec le fournisseur Oracle vous DOIT appel Jetez-vous (ou avez le conteneur de le faire pour vous), sinon vous aurez des fuites /exécuter de connexions.
Je peux fournir un exemple de code, si vous voulez?
OriginalL'auteur Tod Thomson
Assurez-vous que vous n'êtes pas de la connexion à la base de données recusively. Tels que:
OriginalL'auteur Punisher