สร้างการเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จแล้ว แต่แล้วเกิดข้อผิดพลาดระหว่างการจับมือก่อนเข้าสู่ระบบ


111

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามเชื่อมต่อ Production DB จาก Local Environment

ก่อนหน้านี้ฉันสามารถเชื่อมต่อฐานข้อมูลการผลิตได้ แต่ทันใดนั้นฉันก็ได้รับข้อผิดพลาดต่อไปนี้มีความคิดอย่างไร

สร้างการเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จแล้ว แต่แล้วเกิดข้อผิดพลาดระหว่างการจับมือก่อนเข้าสู่ระบบ (ผู้ให้บริการ: TCP Provider ข้อผิดพลาด: 0 - หมายเลขอ้างอิงไม่ถูกต้อง)

ฉันพยายามเรียกใช้เว็บไซต์ asp.net ในพีซีท้องถิ่นซึ่งมีสตริงการเชื่อมต่อของฐานข้อมูลการผลิตต่อไปนี้คือการติดตามสแต็กสำหรับข้อผิดพลาดที่ฉันได้รับในสภาพแวดล้อมเฉพาะที่

>    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)

มีความคิดอะไรที่อาจผิดพลาดที่นี่?


คุณกำลังเชื่อมต่อกับ DBMS ใด
Will A

1
คุณสามารถเชื่อมต่อจากพีซีภายในด้วย SSMS ได้หรือไม่? คำถามนี้น่าจะถามได้ดีกว่าใน serverfault.com
Will A

ใช่ฉันสามารถเชื่อมต่อได้ สิ่งที่ฉันสังเกตเห็นคือมันเริ่มทำงานทันที
Jordon Willis

2
ฉันเชื่อว่าคำถามนี้อยู่ใน StackOverflow (ไม่ใช่ ServerFault) เนื่องจากปัญหาพื้นฐานที่ทำให้เกิดข้อผิดพลาดคือ Asp.net Cassini ใน Visual Studio การหยุดอินสแตนซ์ Cassini (WebDev.WebServer.exe) ที่มีอยู่ทั้งหมดและเรียกใช้แอปอีกครั้งได้ผลสำหรับฉัน
MikeTeeVee

@ MikeTeeVee ฉันพบปัญหาเดียวกันกับแอปพลิเคชัน WinForm แบบธรรมดา ไม่มี Cassini เกี่ยวข้อง
Sylvain Rodrigue

คำตอบ:


154

สารละลาย

1) ทำความสะอาด VS.Net Solution ของคุณ

2) สร้างโครงการใหม่

3) รีเซ็ต IIS

4) ดำเนินโครงการอีกครั้ง

โดยทั่วไปแล้วนั่นช่วยแก้ปัญหาของฉันได้ แต่ในกรณีของฉันฉันไม่ได้รับข้อผิดพลาดนี้และทันใดนั้นสภาพแวดล้อมในพื้นที่ของฉันก็เริ่มให้ข้อผิดพลาดเหนือข้อผิดพลาดดังนั้นเคล็ดลับอาจใช้ได้กับฉัน


25
ฉันมีปัญหาที่คล้ายกัน (localhost ด้วย) ประเด็นสำคัญดูเหมือนจะเป็นจุดที่ 3 สิ่งที่ฉันต้องทำก็คือฆ่าอินสแตนซ์ของ VS WebServer (Cassini) แล้วสร้างใหม่และกด F5 ที่แก้ไขให้ฉัน ขอบคุณสำหรับคำตอบ. (คุณควรพิจารณาทำเครื่องหมายว่าเป็นวิธีแก้ปัญหา)
Amadiere

1
วิธีนี้ใช้ได้ผลกับฉันด้วย ฉันก็ใช้ VS Web Server (Cassini) เช่นกันเมื่อเทียบกับ IIS เหมือนกับ Amadiere
Simon Lomax

7
สิ่งนี้ดูเหมือนจะเป็นวิธีแก้ปัญหามากกว่าการแก้ไข ฉันสงสัยว่าปัญหาที่แท้จริงเกี่ยวข้องกับการรวมการเชื่อมต่อหรือไม่
jrummell

2
มีสิ่งนี้อีกครั้งในวันนี้ สิ่งที่คุณต้องทำคือเรียกใช้ iisreset จากพรอมต์คำสั่งของผู้ดูแลระบบ
Ian Kemp

6
คำตอบนี้สามารถปรับปรุงได้โดยการให้คำแนะนำที่เป็นไปได้สำหรับการวิเคราะห์สาเหตุ การแก้ไขปัญหามีค่า แต่จะมีประโยชน์มากกว่าที่จะทราบว่าเหตุใดจึงเกิดขึ้นและเหตุใดการหลีกเลี่ยงจึงใช้ได้ผล
laindir

15

- บันทึกงานของคุณ
- ปิด Visual Studio จากนั้น
- เปิดโครงการของคุณอีกครั้ง

ใช้ได้กับฉันเสมอ


29
สิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกัน แต่ฉันมักพบว่าการชงกาแฟในขณะที่รีสตาร์ทก็สร้างความแตกต่างได้ทั้งหมด
ED-209

ฉันมีปัญหาที่คล้ายกัน แต่ใช้เซิร์ฟเวอร์โหนดแทน ฉันใช้งานเซิร์ฟเวอร์โหนดบนแขก ubuntu VM และเข้าถึงจากโฮสต์ Windows 10 VM หยุดชั่วคราวและบันทึก VM จากนั้นรีเซ็ตโฮสต์ Windows 10 จากนั้นการเปิดการสำรองข้อมูล VM ใช้งานได้ดังนั้นฉันจึงสันนิษฐานว่าเป็นปัญหากับ Windows ไม่ใช่เซิร์ฟเวอร์ภายใน แต่ตอนนี้ฉันเพิ่งลองรีเซ็ตเซิร์ฟเวอร์โหนดภายในและก็แก้ไขได้เช่นกัน ... ใครจะรู้ฮ่า
RyanQuey

10

การรันคำสั่งต่อไปนี้ใช้ได้ผลสำหรับฉัน:

netsh Winsock reset

ดูได้ที่https://serverfault.com/a/487139/250527


2
วิธีนี้ช่วยแก้ปัญหาของฉันได้ ฉันเป็นหนี้ค่าอาหารกลางวันของเครือข่ายเพราะฉันโยนเขาไว้ใต้รถบัส
greg

FYI resetต้องรีสตาร์ทระบบ
wqw

9

ฉันพบข้อผิดพลาดนี้เมื่อเรียกใช้กระบวนการหน่วยความจำที่มีราคาแพงมาก เมื่อระบบเริ่มมีหน่วยความจำสั้นฉันเริ่มสังเกตเห็นข้อผิดพลาดประเภทนี้ ฉันต้องเปลี่ยนอัลกอริทึมเพื่อให้ใช้ RAM ได้ดีขึ้น

โปรดสังเกตว่าในขณะที่บางเธรดมีข้อยกเว้นนี้ แต่บางเธรดก็โยน:

System.Data.SqlClient.SqlException (0x80131904): หมดเวลาการเชื่อมต่อหมดอายุ หมดระยะหมดเวลาในขณะที่พยายามใช้การตอบรับการจับมือก่อนเข้าสู่ระบบ อาจเป็นเพราะการจับมือกันก่อนล็อกอินล้มเหลวหรือเซิร์ฟเวอร์ไม่สามารถตอบกลับได้ทันเวลา ระยะเวลาที่ใช้ในขณะที่พยายามเชื่อมต่อกับเซิร์ฟเวอร์นี้คือ - [Pre-Login] initialization = 43606; จับมือ = 560; ---> System.ComponentModel.Win32Exception (0x80004005): การดำเนินการรอหมดเวลา

ปัญหาทั้งสองหายไปหลังจากเปลี่ยนระบบเพื่อให้ทำงานได้โดยใช้ RAM น้อยลง


1
ได้รับการยืนยัน ฉันใช้การประมวลผลแบบเข้มข้นบน SQL Server จาก C # โดยใช้แบบขนานก่อนหน้าบนแล็ปท็อปของฉัน การใช้งานหน่วยความจำของฉันถึงขีดสุดแล้ว คอมพิวเตอร์แทบจะไม่สามารถใช้งานได้ประมาณ 15 นาทีก่อนที่ฉันจะได้รับข้อผิดพลาดนี้
TheLegendaryCopyCoder

8

ฉันมีปัญหาเดียวกันฉันกำลังจัดเก็บข้อมูลเซสชันในฐานข้อมูลสตริงการเชื่อมต่อมีEncrypt = Trueอยู่ในนั้นซึ่งฉันถือว่าบอกไคลเอนต์ sql ให้เชื่อมต่อกับเซิร์ฟเวอร์ในโหมดปลอดภัย (SSL) การลบสิ่งนี้ช่วยได้!


1
แฟล็กนี้จะถูกเพิ่มลงในสตริงการเชื่อมต่อของคุณหากคุณกำลังจะใช้ฐานข้อมูล Windows Azure SQL ฉันค่อนข้างมั่นใจว่าจะใช้กับผู้ให้บริการ PaaS / IaaS / Server รายอื่นด้วย
Parth Shah

AzureSQL ต้องการการเข้ารหัสจริงblogs.msdn.microsoft.com/buckwoody/2012/03/06/…
Jeson Martajaya

5

คุณอาจต้องการตรวจสอบบางสิ่ง:

  1. เซิร์ฟเวอร์การผลิตของคุณอนุญาตการเชื่อมต่อระยะไกล (เป็นไปได้ว่ามีคนปิดสิ่งนี้โดยเฉพาะถ้าคุณมี DBA)

  2. ตรวจสอบสตริงการเชื่อมต่อของคุณ บางครั้งหากคุณใช้ที่อยู่ IP หรือชื่อเซิร์ฟเวอร์จะทำให้เกิดข้อผิดพลาดนี้ ลองทั้งสองอย่าง


4

ในกรณีของฉันมันคือ:

Persist Security Info=True;

ในสตริงการเชื่อมต่อของฉันที่จำเป็นต้องลบออก เมื่อฉันทำเช่นนั้นฉันก็ไม่มีปัญหาอีกต่อไป


4

ในกรณีของฉันข้อผิดพลาดนี้เกิดขึ้นกับ dot net core และMicrosoft.Data.SqlClient. ความละเอียดคือการเพิ่ม;TrustServerCertificate=trueที่ส่วนท้ายของสตริงการเชื่อมต่อ


ขอบคุณคุณช่วยฉันไว้ :)
DiPix

นี่คือเมื่อใช้ใบรับรองที่ลงนามด้วยตนเอง
Geoff Gunter

3

ตามที่อธิบายไว้ในคำตอบของริคาร์โด้ ,

netsh Winsock reset

ได้ทำงานให้ฉัน

ปลหากคุณมีตัวจัดการการดาวน์โหลดทางอินเทอร์เน็ตหรือโปรแกรมดังกล่าวที่เปลี่ยนแปลงการตั้งค่า IP ของคุณได้รับการติดตั้งหลังจากเรียกใช้คำสั่งนี้เมื่อคุณรีบูตคอมพิวเตอร์ IDM จะขอให้เปลี่ยนการตั้งค่าตั้งค่า NO ในกรณีนี้จากนั้นเรียกใช้แอปพลิเคชันของคุณมันจะทำงานได้อย่างถูกต้อง

หวังว่า


3

ฉันมีปัญหาคล้ายกันที่ฉันไม่สามารถเชื่อมต่อกับฐานข้อมูลและลองทำตามคำแนะนำที่นี่

ในตอนท้ายของวันนี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน:

ใช้เครื่องมือ SQL Server Configuration Manager เพื่อเปิดใช้งาน TCP / IP และ / หรือโปรโตคอล Named Pipes บนคอมพิวเตอร์ไคลเอนต์ SQL Server

  1. คลิกเริ่มชี้ไปที่โปรแกรมทั้งหมดแล้วคลิกตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL
  2. คลิกเพื่อขยาย SQL Server Network Configuration จากนั้นคลิก Client Protocols
  3. คลิกขวาที่โปรโตคอล TCP / IP จากนั้นคลิกเปิดใช้งาน
  4. คลิกขวาที่โปรโตคอล Named Pipes แล้วคลิก Enable
  5. เริ่มบริการเซิร์ฟเวอร์ SQL ใหม่หากได้รับแจ้งให้ทำเช่นนั้น

ฉันยังไม่แน่ใจว่าเหตุใดจึงปิดการใช้งานนี้หรือเมื่อใด


2

สำหรับฉันวิธีแก้ปัญหาคือการฆ่าซอมบี้กระบวนการทำงานด่วน IIS

เช่นค้นหาในตัวจัดการงานและสิ้นสุดงาน

ใส่คำอธิบายภาพที่นี่


1

ฉันมีปัญหาเดียวกันนี้และไม่มีโชคกับการแก้ไขที่แนะนำ จากนั้นฉันก็เจอบทความนี้และเห็นความคิดเห็นจาก Mirrh เกี่ยวกับโปรแกรมชื่อ Sendori ที่บล็อก LSP ไม่รู้ว่ามันเข้ามาในคอมพิวเตอร์ของฉันได้อย่างไร แต่อยู่ที่นั่นและการลบมันช่วยแก้ปัญหาได้

หากบทความใช้งานไม่ได้ให้ตรวจสอบโปรแกรมของคุณและถอนการติดตั้ง Sendori หากคุณเห็น



1

ฉันได้รับปัญหาเดียวกันโดยไม่มี chnges ไปยังฐานรหัสหรือเซิร์ฟเวอร์ ปรากฎว่าเซิร์ฟเวอร์ DB ทำงานที่ CPU 100% และ SQL Server ถูกหยุดทำงานจากเวลา CPU ใด ๆ ซึ่งทำให้หมดเวลา


1

มีปัญหาเดียวกันจากหลายวัน ฉันต้องเพิ่มการสนับสนุน TLS1.2 อย่างชัดเจนในโครงการหลักของฉันเพื่อแก้ไขข้อผิดพลาดนี้และมันก็ใช้ได้ดี (ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;)

ดูลิงค์ด้านล่างสำหรับรายละเอียดเพิ่มเติม (ขอบคุณผู้เขียน Usman Khurshid) https://www.itechtics.com/connection-successfully-established-error-occured-pre-login-handshake/


1

พยายามส่วนใหญ่ข้างต้นแล้วไม่มีอะไรได้ผล จากนั้นปิดซอฟต์แวร์ VPN (NordVPN) และทุกอย่างเรียบร้อยดี


1

ฉันลองใช้วิธีแก้ปัญหาหลายอย่างในเดือนที่ผ่านมาไม่มีผลใด ๆ ปัญหาคือฐานข้อมูลการผลิตอยู่ใน VPN และผู้ให้บริการ ISP คิดว่าการเชื่อมต่อ HTTP ไม่ปลอดภัย อย่างไรก็ตามฉันสามารถเชื่อมต่อกับ Production DB เดียวกันจาก SSMS (ใช้ TCP)

วิธีแก้ปัญหาของฉัน: ใช้โทรศัพท์มือถือเป็นฮอตสปอตและใช้ข้อมูลมือถือแทน Wi-Fi ที่ทำงาน / ที่บ้าน


1
เหมือนกันในกรณีของฉัน ขอบคุณ!
David Lo

0

มีปัญหาเดียวกันสาเหตุคือไลบรารี BCrypt.Net คอมไพล์โดยใช้. NET 2.0 framework ในขณะที่โปรเจ็กต์ทั้งหมดที่ใช้มันกำลังคอมไพล์ด้วย. NET 4.0 หากอาการเหมือนกันให้ลองดาวน์โหลดซอร์สโค้ด BCryptและสร้างใหม่ในการกำหนดค่ารีลีสภายใน. NET 4.0 หลังจากที่ฉันทำเสร็จแล้ว "การจับมือก่อนเข้าสู่ระบบ" ทำงานได้ดี หวังว่ามันจะช่วยทุกคน


0

ฉันพบข้อผิดพลาดนี้และได้รับคำแนะนำทั้งหมดจากพวกคุณที่นี่ แต่ไม่มีผลใด ๆ สำหรับข้อผิดพลาดของฉัน

ฉันจับผู้ร้ายได้: หากคุณกำลังใช้*.iniไฟล์สำหรับระบบของคุณคุณอาจต้องการตรวจสอบว่ามีการป้อนชื่อเซิร์ฟเวอร์ใดที่นั่นและตรวจสอบให้แน่ใจว่าเป็นชื่อเดียวกับในสตริงการเชื่อมต่อ web.config ของคุณ


0

ปัญหาเดียวกันที่นี่และไม่มีคำตอบในรายการที่นี่ใช้งานได้และไม่มีวิธีแก้ปัญหาใด ๆ ที่ฉันสามารถหาได้ทางออนไลน์ ปัญหาเริ่มต้นไม่นานหลังจากที่มีการใช้การอัปเดตครบรอบ Windows 10 บนพีซีที่กำลังพัฒนาของฉันและส่งผลกระทบต่ออินสแตนซ์ SQL Server 2005 เก่าของฉันเท่านั้น ฉันไม่สามารถเชื่อมต่อกับอินสแตนซ์ผ่านเว็บแอปพลิเคชั่นหรือแม้แต่ใช้ Sql Management Studio

สำหรับสิ่งที่คุ้มค่านี่คือสิ่งที่แก้ไขได้สำหรับฉัน:

  1. เปิดตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL (ขึ้นอยู่กับเวอร์ชันของ SQL Server ที่คุณกำลังใช้งาน):

    • C: \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc หรือ
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc หรือ
    • ฯลฯ
  2. เลือกบริการเซิร์ฟเวอร์ SQL

  3. ค้นหาบริการที่มีปัญหาและดูคุณสมบัติ

    • เช่น SQL Server (SQL2005) ในกรณีของฉัน
  4. ในแท็บเข้าสู่ระบบเปลี่ยน "บัญชีในตัว" เป็น "บริการเครือข่าย"

ซึ่งเกือบจะเป็นสิ่งที่วิธีการแก้ปัญหาแบบสุ่มนี้กล่าว: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection - สร้างสำเร็จด้วยเซิร์ฟเวอร์ แต่แล้วเกิดข้อผิดพลาดเกิดขึ้นระหว่างการเข้าสู่ระบบก่อนการจับมือ -12405.html

ฉันเลือกบริการเครือข่ายโดยไม่มีเหตุผลเลย Mine ได้รับการกำหนดค่าให้ใช้ Local System แล้ว ความปลอดภัยนี้ไม่สำคัญสำหรับฉันเนื่องจากมีปัญหาเฉพาะในเครื่องพัฒนาท้องถิ่นของฉันเข้าถึงได้เฉพาะในเครื่องเท่านั้น ฉันไม่สามารถให้คำแนะนำได้ว่าเหตุใดจึงได้ผล แต่ก็ทำได้


0

ในกรณีของฉันฉันได้รับข้อผิดพลาดเมื่อฉันต้องการเข้าถึงฐานข้อมูลระยะไกล อย่างไรก็ตามฉันแก้ไขได้โดยเริ่มบริการ SQL Server Browser

ใส่คำอธิบายภาพที่นี่


0

หากคุณกำลังเชื่อมต่อกับ SQL Server เก่า:

เปลี่ยนจาก System.Data SqlClient.SqlConnectionกับ System.Data OleDb.OleDbConnection

ใช้สตริงการเชื่อมต่อ 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>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.