Dapatkah saya menambah waktu tunggu dengan mengubah string koneksi di web.config
?
c#
asp.net
sql-server
ado.net
zachary
sumber
sumber
Jawaban:
Ya, Anda dapat menambahkan string koneksi
;Connection Timeout=30
Anda dan menentukan nilai yang Anda inginkan.Nilai waktu tunggu yang ditetapkan di
Connection Timeout
properti adalah waktu yang dinyatakan dalam detik . Jika properti ini tidak disetel, nilai waktu tunggu untuk koneksi adalah nilai default (15 detik).Selain itu, menyetel nilai waktu tunggu ke
0
, Anda menetapkan bahwa upaya Anda untuk menyambung menunggu waktu yang tak terbatas. Seperti yang dijelaskan dalam dokumentasi, ini adalah sesuatu yang tidak boleh Anda setel di string koneksi Anda:sumber
Hmmm...
Seperti yang dikatakan Darin, Anda dapat menentukan nilai batas waktu koneksi yang lebih tinggi, tetapi saya ragu itulah masalahnya.
Ketika Anda mendapatkan waktu tunggu koneksi habis, biasanya itu masalah dengan salah satu dari berikut ini:
Konfigurasi jaringan - koneksi lambat antara server web / kotak dev Anda dan server SQL. Meningkatkan batas waktu dapat memperbaiki hal ini, tetapi akan bijaksana untuk menyelidiki masalah yang mendasarinya.
String koneksi. Saya telah melihat masalah di mana nama pengguna / kata sandi yang salah, karena alasan tertentu, akan memberikan kesalahan waktu tunggu alih-alih kesalahan nyata yang menunjukkan "akses ditolak." Ini seharusnya tidak terjadi, tetapi begitulah hidup.
String Koneksi 2: Jika Anda salah menentukan nama server, atau tidak lengkap (misalnya,
mysqlserver
bukanmysqlserver.webdomain.com
), Anda akan mendapatkan waktu tunggu. Dapatkah Anda melakukan ping ke server menggunakan nama server persis seperti yang ditentukan dalam string koneksi dari baris perintah?String koneksi 3: Jika nama server ada di DNS Anda (atau file host), tetapi mengarah ke IP yang salah atau tidak dapat diakses, Anda akan mendapatkan waktu tunggu daripada kesalahan mesin-tidak-ditemukan-ish.
Kueri yang Anda panggil sudah habis waktunya. Sepertinya koneksi ke server adalah masalahnya, tetapi, bergantung pada bagaimana aplikasi Anda terstruktur, Anda bisa membuatnya sampai ke tahap di mana kueri Anda dieksekusi sebelum waktu tunggu terjadi.
Kebocoran koneksi. Berapa banyak proses yang sedang berjalan? Berapa banyak koneksi terbuka? Saya tidak yakin apakah ADO.NET mentah melakukan penggabungan koneksi, secara otomatis menutup koneksi bila diperlukan ala Enterprise Library, atau di mana semua itu dikonfigurasi. Ini mungkin ikan haring merah. Namun, saat bekerja dengan WCF dan layanan web, saya mengalami masalah dengan koneksi yang tidak ditutup yang menyebabkan waktu tunggu dan perilaku tak terduga lainnya.
Hal untuk dicoba:
Apakah Anda mendapatkan waktu tunggu saat menyambung ke server dengan SQL Management Studio? Jika demikian, kemungkinan besar konfigurasi jaringan masalahnya. Jika Anda tidak melihat masalah saat menghubungkan dengan Management Studio, masalahnya ada di aplikasi Anda, bukan di server.
Jalankan SQL Profiler, dan lihat apa yang sebenarnya terjadi di kabel. Anda harus dapat mengetahui apakah Anda benar-benar terhubung, atau jika kueri adalah masalahnya.
Jalankan kueri Anda di Management Studio, dan lihat berapa lama waktu yang dibutuhkan.
Semoga berhasil!
sumber
Jika Anda ingin mengubahnya secara dinamis, saya lebih suka menggunakan SqlConnectionStringBuilder .
Ini memungkinkan Anda untuk mengubah ConnectionString yaitu string menjadi Objek kelas, Semua properti koneksi string akan menjadi Anggotanya.
Dalam hal ini keuntungan sebenarnya adalah Anda tidak perlu khawatir jika bagian string ConnectionTimeout sudah ada dalam string koneksi atau tidak?
Juga karena itu membuat Objek dan selalu baik untuk menetapkan nilai dalam objek daripada memanipulasi string.
Ini contoh kodenya:
sumber
ConnectionTimeout
properti denganSqlConnection
tipe hanya-baca dianggap ide yang bagus.