2010-02-15 52 views
7

Tôi đang tạo ứng dụng trong C#. Tôi đang sử dụng một chuỗi kết nối như:thuộc tính thời gian chờ kết nối trong chuỗi kết nối bị bỏ qua

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

Nhưng không có vấn đề gì giá trị tôi đặt như x (Connection Timeout = x), bằng cách đặt một breakpoint, tôi có thể thấy rằng tài sản ConnectionTimeoutDbConnection đối tượng của tôi lúc nào cũng có giá trị mặc định 15.

Tôi có thiếu gì đó ở đây không?

Cảm ơn.

+0

Bạn đang cố gắng đặt X cao hơn hoặc thấp hơn 15? Bạn đã xác nhận rằng nó đang thực sự hết thời gian ở mức 15, thay vì ở mức X (ví dụ: có lẽ giá trị bạn đang xem là cá trích đỏ). Ngoài ra, một số mã và/hoặc ngữ cảnh khác sẽ hữu ích hơn ở đây (ví dụ: bạn đang kết nối với một DB Oracle, v.v.). –

+0

Tôi đang gặp phải vấn đề này. Điều kỳ lạ là tôi đã thêm đăng nhập để xác nhận chuỗi kết nối đang được sử dụng và thời gian cần thiết và tôi chỉ nhận được 9 hoặc 10 giây thay vì 120 tôi đang yêu cầu hoặc 15 đó là mặc định. – JohnOpincar

+0

Điều tương tự ở đây. Đã hết thời gian chờ kết nối = 5 và Thời gian chờ kết nối = 5. Cả hai đều bị bỏ qua và phải mất 15. Có lẽ 15 là tối thiểu ?? – AndyM

Trả lời

14

Connection Timeout trong ConnectionString chỉ kiểm soát thời gian chờ kết nối. Nếu bạn cần tăng thời gian chờ trên các Lệnh của bạn, hãy sử dụng thuộc tính CommandTimeout của SqlCommand.

+0

Cảm ơn bạn! –

1

Tôi không thấy hành vi bạn cho biết, ít nhất là khi tôi thử nghiệm kịch bản bằng cách sử dụng SqlConnectionStringBuilder.

Thuộc tính ConnectionTimeout của kết nối khớp với số ConnectTimeout được đặt trên trình tạo. Tôi đã sử dụng , và làm giá trị và tất cả được đặt trên kết nối.

using 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); 
} 

Nếu bạn không giao dịch với SQL, bạn cũng có thể xem sử dụng DbConnectionStringBuilder hoặc một trong các loại phụ của nó. Nói chung tôi thấy nó an toàn nhất để xây dựng chuỗi kết nối lập trình bằng cách sử dụng một trong các trình xây dựng sẵn có để bạn có thể tránh bất kỳ định dạng xấu nào của chuỗi kết nối mà bạn sẽ sử dụng để tạo các kết nối.

-1

Có, 15 là mức tối thiểu, tùy thuộc vào việc bạn đang làm. Có lẽ là một điều cho mỗi nhà cung cấp. Tôi thậm chí đã tìm thấy khi cố gắng sử dụng ít hơn 15 (với một số điều khiển bên thứ 3) bằng cách sử dụng SQL Native Client, tôi kết thúc với timeouts vô hạn thay thế. Kinh quá. Khi tôi đặt 15 hoặc cao hơn, nó hoạt động như mong đợi.

Các vấn đề liên quan