2010-02-15 10 views
7

Estoy construyendo una aplicación en C#. Estoy usando una cadena de conexión como:propiedad de tiempo de espera de conexión en cadena de conexión ignorado

DSN=SomeDataSource; Trusted Connection = yes; Uid=SomeId; pwd=somePwd; Connection Timeout=x 

Pero no importa qué valor me puse como x (Connection Timeout = x), por poner un punto de interrupción, puedo ver que la propiedad de mi DbConnection del objeto ConnectionTimeout tiene siempre el valor por defecto 15.

Me estoy perdiendo algo aquí?

Gracias.

+0

¿Está tratando de establecer X más alto o más bajo que 15? ¿Ha confirmado que está actualizando el tiempo de espera en 15, en lugar de en X (por ejemplo, tal vez el valor que está viendo es un arenque rojo). Además, algunos más códigos y/o contextos serían más útiles aquí (por ejemplo, si se está conectando a un Oracle DB, etc.). –

+0

Tengo exactamente este problema. Lo curioso es que agregué el registro para confirmar la cadena de conexión que se usa y el tiempo que toma, y ​​solo obtengo 9 o 10 segundos en lugar de los 120 que estoy pidiendo o los 15 que son los predeterminados. – JohnOpincar

+0

Lo mismo aquí. Intentó Tiempo de espera de conexión = 5 y Tiempo de espera de conexión = 5. Ambos se ignoran y se necesita 15. ¿Tal vez 15 es el mínimo? – AndyM

Respuesta

14

El Connection Timeout en ConnectionString solo controla el tiempo de espera para la conexión. Si necesita aumentar el tiempo de espera en sus Comandos, use la propiedad CommandTimeout de SqlCommand.

+0

¡Gracias amablemente! –

1

No veo el comportamiento que está indicando, al menos cuando pruebo el escenario con un SqlConnectionStringBuilder.

La propiedad ConnectionTimeout de la conexión coincide con el ConnectTimeout establecido en el generador. Usé , y como valores y todos se establecieron en la conexión.

usando System.Data.SqlClient;

var builder = new SqlConnectionStringBuilder(); 

builder.ApplicationName  = "My Demo App"; 
builder.ConnectTimeout  = 5; 
builder.DataSource   = "(local)"; 
builder.InitialCatalog  = "My Database"; 
builder.IntegratedSecurity = true; 

using(var connection = new SqlConnection(builder.ConnectionString)) 
{ 
    Console.WriteLine("Connection Timeout: {0}", connection.ConnectionTimeout); 
} 

Si no se trata de SQL, también puede buscar en el uso DbConnectionStringBuilder o uno de sus subtipos. En general, creo que es más seguro construir la cadena de conexión mediante programación utilizando uno de los constructores disponibles para que pueda evitar el mal formato de la cadena de conexión que utilizará para crear conexiones.

-1

Sí, 15 es el mínimo, dependiendo de lo que esté haciendo. Probablemente una cosa por proveedor. Incluso encontré que cuando trato de usar menos de 15 (con algunos controles de terceros) usando SQL Native Client, termino con tiempos de espera infinitos. Yuck. Cuando configuro 15 o más, se comporta como se esperaba.

Cuestiones relacionadas