Sambungan berhasil dibuat dengan server, tetapi kemudian terjadi kesalahan selama jabat tangan pra-masuk

111

Saya mendapatkan kesalahan berikut ketika saya mencoba menghubungkan DB Produksi dari Lingkungan Lokal.

Saya dapat menghubungkan DB Produksi sebelumnya, tetapi tiba-tiba saya mendapatkan kesalahan berikut, tahu?

Sambungan berhasil dibuat dengan server, tetapi kemudian terjadi kesalahan selama jabat tangan pra-masuk. (penyedia: Penyedia TCP, kesalahan: 0 - Pegangan tidak valid.)

Saya mencoba menjalankan situs web asp.net di PC lokal, yang memiliki rangkaian koneksi DB Produksi, berikut adalah jejak tumpukan untuk kesalahan yang saya dapatkan di lingkungan lokal.

>    at MyWebsiteDAL.clsForumQuestion.SelectAll(Int32 CurrentPageIndex, Int32 PageSize) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsiteDAL\clsForumQuestion.cs:line 821
       at CodeConnect.Default.Page_Load(Object sender, EventArgs e) in D:\EDrive\My WebSites\MyWebsite\MyWebsite\MyWebsite\Default.aspx.cs:line 100
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Tahu apa yang salah di sini?

Jordon Willis
sumber
DBMS mana yang Anda sambungkan?
Akankah A
1
Apakah Anda dapat terhubung dari PC lokal dengan SSMS? Pertanyaan ini akan lebih baik ditanyakan di serverfault.com
Akankah A
Ya, saya dapat terhubung. Apa yang saya amati tiba-tiba itu mulai bekerja.
Jordon Willis
2
Saya percaya pertanyaan ini memang termasuk dalam StackOverflow (dan bukan ServerFault) karena masalah yang mendasari yang menyebabkan kesalahan adalah Asp.net Cassini di Visual Studio. Menghentikan semua instance Cassini (WebDev.WebServer.exe) yang ada dan menjalankan kembali aplikasi berhasil untuk saya.
MikeTeeVee
@ MikeTeeVee Saya mendapat masalah yang sama dengan aplikasi WinForm sederhana. Tidak ada cassini yang terlibat.
Sylvain Rodrigue

Jawaban:

154

Larutan

1) Bersihkan Solusi VS.Net Anda

2) Membangun Kembali Proyek.

3) Setel ulang IIS

4) Jalankan proyek lagi.

Pada dasarnya itu memecahkan masalah saya, tetapi dalam kasus saya, saya tidak mendapatkan kesalahan ini dan tiba-tiba lingkungan lokal saya mulai memberi saya kesalahan di atas, jadi mungkin trik itu berhasil untuk saya.

Jordon Willis
sumber
25
Saya memiliki masalah serupa (localhost juga). Poin kuncinya sepertinya mungkin poin 3. Yang perlu saya lakukan hanyalah mematikan instance VS WebServer (Cassini) dan membangun kembali & menekan F5. Itu menyelesaikannya untuk saya. Terima kasih atas jawaban anda. (Anda harus mempertimbangkan menandainya sebagai solusi)
Amadiere
1
Solusi ini juga berhasil untuk saya. Saya juga menggunakan VS Web Server (Cassini) sebagai lawan IIS sama seperti Amadiere.
Simon Lomax
7
Ini terdengar lebih seperti solusi daripada perbaikan. Saya ingin tahu apakah masalah sebenarnya ada hubungannya dengan penggabungan koneksi.
jrummell
2
Punya ini lagi hari ini. Yang perlu Anda lakukan hanyalah menjalankan iisreset dari prompt perintah admin.
Ian Kemp
6
Jawaban ini dapat ditingkatkan dengan memberikan beberapa arahan yang mungkin untuk analisis akar penyebab. Work-arounds memiliki nilai, tetapi lebih berguna untuk mengetahui mengapa hal ini terjadi dan mengapa work-arounds berhasil.
laindir
15

- Simpan pekerjaan Anda,
- Tutup Visual Studio, lalu
- Buka kembali proyek Anda

Selalu bekerja untuk saya.

Dumisani
sumber
29
Ini juga berhasil untuk saya, tetapi saya sering menemukan bahwa membuat kopi saat restart membuat semua perbedaan.
ED-209
Saya memiliki masalah yang sama, tetapi dengan server node sebagai gantinya. Saya menjalankan server node pada tamu VM ubuntu dan mengakses dari host VM Windows 10. Menjeda dan menyimpan VM, lalu mengatur ulang host Windows 10, kemudian membuka cadangan VM berfungsi, jadi saya berasumsi bahwa itu adalah masalah dengan Windows, bukan server lokal. Tapi kemudian, saya baru saja mencoba mengatur ulang server node lokal, dan itu memperbaikinya juga ... jadi siapa tahu, ha
RyanQuey
10

Menjalankan perintah berikut berhasil untuk saya:

netsh Winsock reset

Dilihat di https://serverfault.com/a/487139/250527

Ricardo Stuven
sumber
2
Ini menyelesaikan masalah saya. Aku berhutang makan siang pada petugas jaringan karena aku telah melemparkannya ke bawah bus.
greg
FYI, ini resetmembutuhkan restart sistem.
wqw
9

Saya mengalami kesalahan ini saat menjalankan beberapa proses yang menghabiskan banyak memori. Ketika sistem mulai kekurangan memori, saya mulai melihat jenis kesalahan ini. Saya harus mengubah algoritme untuk memanfaatkan RAM dengan lebih baik.

Untuk diperhatikan bahwa sementara beberapa utas melakukan pengecualian ini, beberapa utas lainnya melemparkan:

System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. Periode waktu tunggu berlalu saat mencoba menggunakan pengakuan jabat tangan pra-login. Ini bisa jadi karena handshake pra-login gagal atau server tidak dapat merespons tepat waktu. Durasi yang dihabiskan ketika mencoba untuk terhubung ke server ini adalah - Inisialisasi [Pra-Login] = 43606; jabat tangan = 560; ---> System.ComponentModel.Win32Exception (0x80004005): Operasi tunggu habis waktunya

Kedua masalah tersebut hilang setelah sistem diubah sehingga dapat berjalan menggunakan lebih sedikit RAM.

Starnuto di topo
sumber
1
Dikonfirmasi. Saya menjalankan pemrosesan intensif di SQL Server dari C # menggunakan parallel.foreach di laptop saya. Penggunaan memori saya sudah maksimal. Komputer hampir tidak dapat digunakan selama sekitar 15 menit sebelum saya mendapatkan kesalahan ini.
TheLegendaryCopyCoder
8

Saya memiliki masalah yang sama, saya menyimpan data sesi dalam database, string koneksi memiliki Encrypt = True di dalamnya, yang saya asumsikan memberi tahu klien sql untuk terhubung ke server dalam mode aman (SSL), menghapus ini membantu!

Terry Kernan
sumber
1
Bendera ini akan ditambahkan ke string koneksi Anda jika Anda akan menggunakan Database Windows Azure SQL. Saya cukup yakin ini akan digunakan untuk penyedia PaaS / IaaS / Server lainnya juga.
Parth Shah
AzureSQL membutuhkan benar mengenkripsi blogs.msdn.microsoft.com/buckwoody/2012/03/06/...
Jeson Martajaya
5

Anda mungkin ingin memeriksa beberapa hal:

  1. Server produksi Anda memungkinkan koneksi jarak jauh. (mungkin seseorang mematikan ini, terutama jika Anda memiliki DBA)

  2. Periksa string koneksi Anda. Terkadang jika Anda menggunakan alamat ip atau nama server ini akan menyebabkan kesalahan ini. Coba keduanya.

Richard Fantozzi
sumber
4

Dalam kasus saya, itu adalah:

Persist Security Info=True;

dalam string koneksi saya yang perlu dihapus. Setelah saya melakukannya, saya tidak lagi memiliki masalah.

delliottg.dll
sumber
4

Dalam kasus saya, kesalahan ini terjadi dengan inti dot net dan Microsoft.Data.SqlClient. Resolusi adalah untuk menambah ;TrustServerCertificate=trueujung string koneksi.

gratinierer
sumber
Terima kasih, Anda menyelamatkan saya :)
DiPix
Ini saat menggunakan sertifikat yang ditandatangani sendiri
Geoff Gunter
3

Seperti yang dijelaskan dalam jawaban Ricardo ,

netsh Winsock reset

telah bekerja untuk saya,

PS jika Anda memiliki pengelola unduhan Internet atau program semacam itu yang mengubah Anda Pengaturan IP diinstal kemudian setelah menjalankan perintah ini ketika Anda reboot komputer Anda IDM akan meminta untuk mengubah pengaturan, Set NO dalam hal ini dan kemudian jalankan aplikasi Anda, itu akan berfungsi dengan benar.

Berharap itu

Vishal Sharma
sumber
3

Saya mengalami masalah serupa di mana saya tidak dapat terhubung ke database dan mencoba rekomendasi di sini.

Pada akhirnya, inilah yang berhasil bagi saya:

Menggunakan alat SQL Server Configuration Manager untuk mengaktifkan protokol TCP / IP dan / atau Named Pipes di komputer klien SQL Server.

  1. Klik Mulai, arahkan ke Semua Program, dan klik Manajer Konfigurasi Server SQL.
  2. Klik untuk memperluas Konfigurasi Jaringan SQL Server dan kemudian klik Protokol Klien.
  3. Klik kanan protokol TCP / IP dan kemudian klik Aktifkan.
  4. Klik kanan protokol Named Pipes dan kemudian klik Enable.
  5. Mulai ulang layanan server SQL jika diminta untuk melakukannya.

Saya masih tidak yakin mengapa atau kapan ini dinonaktifkan.

daffyjeje
sumber
2

Bagi saya solusinya adalah dengan membunuh proses pekerja ekspres IIS zombie.

misalnya cari di Task Manager dan tugas akhir.

masukkan deskripsi gambar di sini

Daniel de Zwaan
sumber
1

Saya memiliki masalah yang sama dan tidak berhasil dengan perbaikan yang disarankan. Saya kemudian menemukan artikel ini dan melihat komentar dari Mirrh tentang program bernama Sendori yang memblokir LSP. Tidak tahu bagaimana itu masuk ke komputer saya tetapi itu ada dan menghapusnya memperbaiki masalah.

Jika artikel tidak berhasil, periksa saja Program Anda dan hapus instalan Sendori jika Anda melihatnya.

rickeroye
sumber
1

Saya memulai ulang layanan SQL Server (Sharepoint) dan itu menyelesaikan masalah.

pengguna2087459
sumber
1

Saya mendapatkan masalah yang sama persis tanpa perubahan ke basis kode atau server. Ternyata server DB berjalan pada 100% CPU dan SQL Server sedang kekurangan waktu CPU, yang menyebabkan waktu tunggu.

TheLukeMcCarthy
sumber
1

Mencoba sebagian besar hal di atas dan tidak ada yang berhasil. Kemudian matikan perangkat lunak VPN (NordVPN) dan semuanya baik-baik saja.

Paul Evans
sumber
1

Saya mencoba banyak solusi dalam sebulan terakhir, tidak ada yang berhasil. Masalahnya adalah Production DB ada di dalam VPN dan entah bagaimana penyedia ISP menganggap koneksi HTTP tidak aman. Namun, saya dapat menyambung ke DB Produksi yang sama dari SSMS (menggunakan TCP).

Solusi saya: gunakan ponsel sebagai hotspot dan gunakan data seluler alih-alih Wi-Fi kantor / rumah saya.

mihai_omega
sumber
1
Sama dalam kasus saya. Terima kasih!
David Lo
0

Punya masalah yang sama, alasannya adalah pustaka BCrypt.Net, dikompilasi menggunakan framework .NET 2.0, sedangkan keseluruhan proyek, yang menggunakannya, dikompilasi dengan .NET 4.0. Jika gejalanya sama, coba unduh kode sumber BCrypt dan buat kembali dalam konfigurasi rilis dalam .NET 4.0. Setelah saya melakukannya, "jabat tangan pra-login" berfungsi dengan baik. Semoga bisa membantu siapa saja.

Eadel
sumber
0

Saya mengalami kesalahan ini dan melakukan semua saran dari kalian di sini tetapi tidak ada yang berpengaruh atas kesalahan saya.

Saya menangkap pelakunya: jika Anda menggunakan *.inifile untuk sistem Anda, Anda mungkin ingin memeriksa nama server apa yang dimasukkan di sana dan memastikan itu sama dengan yang ada di string koneksi web.config Anda.

pengguna3619399
sumber
0

Masalah yang sama di sini dan tidak ada jawaban yang tercantum di sini yang berfungsi, juga tidak ada solusi yang dapat saya temukan secara online. Masalah dimulai segera setelah pembaruan hari jadi Windows 10 diterapkan pada PC dev saya dan hanya memengaruhi contoh SQL Server 2005 lama saya. Saya tidak dapat menyambung ke instans melalui Aplikasi Web saya atau bahkan menggunakan Sql Management Studio.

Untuk apa nilainya, inilah yang menyelesaikannya untuk saya:

  1. Buka Manajer Konfigurasi Server SQL (bergantung pada versi SQL Server yang Anda jalankan):

    • C: \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc ATAU
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc ATAU
    • dll
  2. Pilih Layanan SQL Server

  3. Temukan layanan bermasalah dan lihat Properties

    • misalnya SQL Server (SQL2005) dalam kasus saya
  4. Di tab Log On, ubah "Akun bawaan" menjadi "Layanan Jaringan"

Yang hampir seperti yang dikatakan solusi acak ini: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection -was-berhasil-didirikan-dengan-server-tetapi-kemudian-kesalahan-terjadi-selama-pra-login-handshake-12405.html

Saya memilih Layanan Jaringan tanpa alasan sama sekali. Punyaku sudah dikonfigurasi untuk menggunakan Sistem Lokal. Keamanan ini tidak masalah bagi saya karena hanya bermasalah di mesin pengembangan Lokal saya, hanya diakses secara lokal. Saya tidak bisa memberi tahu mengapa ini berhasil, tetapi berhasil.

Arkiliknam
sumber
0

Dalam kasus saya, saya mendapatkan kesalahan ketika saya ingin mengakses database jarak jauh. Namun, saya menyelesaikannya dengan memulai layanan SQL Server Browser.

masukkan deskripsi gambar di sini

Ifesinachi Bryan
sumber
0

Jika Anda menyambungkan ke SQL Server lama:

Beralih dari System.Data. SqlClient.SqlConnection ke System.Data. OleDb.OleDbConnection

Gunakan string koneksi OleDb:

<connectionStrings>
<add name="Northwind" connectionString="Provider=SQLOLEDB.1; Data Source=MyServer; Initial Catalog=Northwind;  Persist Security Info=True; User ID=abc; Password=xyz;" providerName="System.Data.OleDb" />
</connectionStrings>
Dominic Isaia
sumber