Sunucuyla başarılı bir şekilde bir bağlantı kuruldu, ancak daha sonra oturum öncesi anlaşma sırasında bir hata oluştu


111

Üretim DB'sini Yerel Ortamdan bağlamaya çalışırken aşağıdaki hatayı alıyorum.

Daha önce Production DB'yi bağlayabildim, ancak aniden aşağıdaki hatayı alıyorum, herhangi bir fikir?

Sunucuyla başarılı bir şekilde bağlantı kuruldu, ancak daha sonra oturum açma öncesi anlaşma sırasında bir hata oluştu. (sağlayıcı: TCP Sağlayıcısı, hata: 0 - İşleyici geçersiz.)

Üretim DB'nin bağlantı dizesine sahip yerel PC'de asp.net web sitesini çalıştırmaya çalışıyordum, aşağıdaki yerel ortamda aldığım hata için yığın izleme.

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

Burada neyin yanlış gittiğine dair bir fikriniz var mı?


Hangi DBMS'ye bağlanıyorsunuz?
Olacak

1
Yerel PC'den SSMS ile bağlanabiliyor musunuz? Bu soru serverfault.com'da daha iyi sorulacaktır
A

Evet bağlanabiliyorum. Gözlemlediğim şey birdenbire çalışmaya başladı.
Jordon Willis

2
Bu sorunun StackOverflow'a (ServerFault'a değil) ait olduğuna inanıyorum çünkü hataya neden olan temel sorun Visual Studio'daki Asp.net Cassini idi. Mevcut tüm Cassini (WebDev.WebServer.exe) örneklerini durdurmak ve uygulamayı yeniden çalıştırmak benim için çalıştı.
MikeTeeVee

@ MikeTeeVee Basit bir WinForm uygulamasıyla aynı sorunu yaşadım. Cassini dahil değil.
Sylvain Rodrigue

Yanıtlar:


154

Çözüm

1) VS.Net Çözümünüzü temizleyin

2) Yeniden Oluşturma Projesi.

3) IIS'yi sıfırlayın

4) Projeyi tekrar çalıştırın.

Temelde bu benim sorunumu çözdü, ama benim durumumda bu hatayı almıyordum ve aniden yerel ortamım bana yukarıdaki hatayı vermeye başladı, bu yüzden benim için bu hile işi olabilir.


25
Benzer bir sorun yaşadım (localhost da). Kilit nokta belki 3. nokta gibi görünüyor. Yapmam gereken tek şey VS WebServer (Cassini) örneğini öldürmek ve yeniden oluşturmak ve F5'e basmaktı. Bu benim için çözdü. Cevabınız için teşekkürler. (Çözüm olarak işaretlemeyi düşünmelisiniz)
Amadiere

1
Bu çözüm benim için de çalıştı. Ben de Amadiere ile aynı IIS yerine VS Web Sunucusu (Cassini) kullanıyordum.
Simon Lomax

7
Bu, bir düzeltmeden çok bir geçici çözüm gibi görünüyor. Asıl sorunun bağlantı havuzlamayla ilgisi olup olmadığını merak ediyorum.
jrummell

2
Bugün yine yaptım. Tek yapmanız gereken, bir yönetici komut isteminden iisreset'i çalıştırmaktır.
Ian Kemp

6
Bu yanıt, kök neden analizi için bazı olası yönergeler sağlanarak iyileştirilebilir. Geçici çözümlerin değeri vardır, ancak bunun neden olduğunu ve çözümün neden işe yaradığını bilmek daha yararlıdır.
laindir

15

- Çalışmanızı kaydedin,
- Visual Studio'yu kapatın, ardından
- Projenizi yeniden açın

Her zaman benim için çalışır.


29
Bu benim için de işe yaradı, ancak çoğu zaman yeniden başlarken bir kahve yapmanın tüm farkı yarattığını görüyorum.
ED-209

Benzer bir sorun yaşadım, ancak bunun yerine bir düğüm sunucusuyla. Ubuntu VM konuğu üzerinde bir düğüm sunucusu çalıştırıyor ve Windows 10 VM ana bilgisayarından erişiyordum. Sanal makineyi duraklatmak ve kaydetmek, ardından Windows 10 ana bilgisayarını sıfırlamak, ardından sanal makine yedeklemesini açmak işe yaradı, bu yüzden yerel sunucuda değil Windows ile ilgili bir sorun olduğunu varsaydım. Ama sonra, şimdi yerel düğüm sunucusunu sıfırlamayı denedim ve bu da onu düzeltti ... peki kim bilir ha
RyanQuey


9

Bu hatayı bellek açısından çok pahalı olan bazı işlemleri çalıştırırken yaşadım. Sistem hafızası yetersiz çalışmaya başladığında, bu tür bir hatayı fark etmeye başladım. RAM'i daha iyi kullanmak için algoritmayı değiştirmem gerekiyordu.

Unutulmamalıdır ki, bazı ipler bu istisnayı atarken, bazılarının attığı:

System.Data.SqlClient.SqlException (0x80131904): Bağlantı Zaman Aşımı Süresi Doldu. Oturum öncesi el sıkışma bildirimini kullanmaya çalışırken zaman aşımı süresi geçti. Bunun nedeni, oturum açma öncesi anlaşmanın başarısız olması veya sunucunun zamanında yanıt verememesi olabilir. Bu sunucuya bağlanmaya çalışırken harcanan süre - [Giriş Öncesi] başlatma = 43606; el sıkışma = 560; ---> System.ComponentModel.Win32Exception (0x80004005): Bekleme işlemi zaman aşımına uğradı

Sistem daha az RAM kullanarak çalışabilmesi için değiştirildikten sonra her iki sorun da ortadan kalktı.


1
Onaylanmış. Dizüstü bilgisayarımda parallel.foreach kullanarak C # üzerinden SQL Server üzerinde yoğun işlem yaptım. Hafıza kullanımım maks. Bu hatayı almadan önce bilgisayar yaklaşık 15 dakika boyunca neredeyse hiç kullanılamıyordu.
TheLegendaryCopyCoder

8

Aynı problemi yaşadım, oturum verilerini veritabanında depoluyordum, bağlantı dizesinin içinde Encrypt = True vardı , sanırım sql istemcisine sunucuya güvenli (SSL) modda bağlanmasını söyledim, bunu kaldırmak yardımcı oldu!


1
Windows Azure SQL Veritabanı kullanacaksanız, bu bayrak bağlantı dizenize eklenecektir. Diğer PaaS / IaaS / Sunucu sağlayıcıları için de kullanılacağından oldukça eminim.
Parth Shah

Şifreli gerçek blogs.msdn.microsoft.com/buckwoody/2012/03/06/… gerektiren AzureSQL
Jeson Martajaya

5

Birkaç şeyi kontrol etmek isteyebilirsiniz:

  1. Üretim sunucunuz uzak bağlantılara izin veriyor. (özellikle bir DBA'nız varsa, birisi bunu kapatmış olabilir)

  2. Bağlantı dizenizi kontrol edin. Bazen bir ip adresi veya sunucu adı kullanıyorsanız bu, bu hataya neden olur. İkisini de dene.


4

Benim durumumda:

Persist Security Info=True;

kaldırılması gereken bağlantı dizemde. Bunu yaptığımda artık sorunlarım kalmadı.


4

Benim durumumda bu hata dot net core ve Microsoft.Data.SqlClient. Çözüm ;TrustServerCertificate=true, bağlantı dizesinin sonuna eklenmekti .


Teşekkürler, beni kurtardın :)
DiPix

Kendinden imzalı sertifikaları kullanırken
buydu

3

Ricardo'nun cevabında anlatıldığı gibi ,

netsh Winsock reset

benim için çalıştı

Not: İnternet indirme yöneticiniz varsa veya IP Ayarınızı değiştiren bu tür programlar yüklenirse, bilgisayarınızı yeniden başlattığınızda bu komutu çalıştırdıktan sonra IDM ayarı değiştirmenizi isteyecektir, bu durumda HAYIR'ı ayarlayın ve ardından uygulamanızı çalıştırın.

Umarım


3

Bir veritabanına bağlanamadığım ve buradaki önerileri denediğim benzer bir sorun yaşadım.

Günün sonunda benim için işe yarayan şey buydu:

SQL Server istemci bilgisayarında TCP / IP ve / veya Named Pipes protokollerini etkinleştirmek için SQL Server Configuration Manager aracını kullandı.

  1. Başlat'a tıklayın, Tüm Programlar'ın üzerine gelin ve SQL Server Configuration Manager'a tıklayın.
  2. SQL Server Ağ Yapılandırması'nı genişletmek için tıklayın ve ardından İstemci Protokolleri'ni tıklayın.
  3. TCP / IP protokolüne sağ tıklayın ve ardından Etkinleştir'e tıklayın.
  4. Named Pipes protokolüne sağ tıklayın ve ardından Etkinleştir öğesine tıklayın.
  5. İstenirse SQL sunucu hizmetini yeniden başlatın.

Hala neden veya ne zaman devre dışı bırakıldığından emin değilim.


2

Benim için çözüm zombi IIS ekspres işçi süreçlerini öldürmektir.

örneğin, Görev Yöneticisi'nde bulun ve görevi sonlandırın.

görüntü açıklamasını buraya girin


1

Aynı sorunu yaşadım ve önerilen düzeltmelerde hiç şansım olmadı. Daha sonra bu makaleye rastladım ve Mirrh'den Sendori adlı LSP'yi engelleyen bir programla ilgili yorumu gördüm. Bilgisayarıma nasıl girdiğine dair hiçbir fikrim yok ama oradaydı ve onu kaldırmak sorunu çözdü.

Makale çalışmazsa, Programlarınızı kontrol edin ve görürseniz Sendori'yi kaldırın.



1

Kod tabanına veya sunuculara hiçbir değişiklik yapmadan aynı sorunu alıyordum. DB sunucusunun% 100 CPU'da çalıştığı ve SQL Server'ın zaman aşımına neden olan herhangi bir CPU zamanından mahrum kaldığı ortaya çıktı.



1

Yukarıdakilerin çoğunu denedim ve hiçbir şey işe yaramadı. Sonra VPN yazılımını (NordVPN) kapattı ve her şey yolundaydı.


1

Geçtiğimiz ay birçok çözümü denedim, hiçbiri işe yaramadı. Sorun, Üretim DB'sinin bir VPN içinde olması ve ISP sağlayıcısının bir şekilde HTTP bağlantısının güvenli olmadığını düşünmesidir. Ancak, SSMS'den aynı Üretim Veritabanına bağlanabildim (TCP kullanır).

Çözümüm: Cep telefonunu bir erişim noktası olarak kullanın ve ofisim / ev Wi-Fi'm yerine mobil verileri kullanın.


1
Benim durumumda da aynı. Teşekkürler!
David Lo

0

Aynı sorun vardı, nedeni BCrypt.Net kitaplığı, .NET 2.0 çerçevesi kullanılarak derlenmiş ve onu kullanan tüm proje .NET 4.0 ile derleniyordu. Belirtiler aynıysa, BCrypt kaynak kodunu indirmeyi ve .NET 4.0'daki yayın yapılandırmasında yeniden oluşturmayı deneyin . Bunu yaptıktan sonra "giriş öncesi anlaşması" iyi çalıştı. Umarım herkese yardımcı olur.


0

Bu hatayı yaşadım ve sizlerden gelen tüm önerileri burada yaptım ama hiçbirinin benim hatam için herhangi bir etkisi olmadı.

Suçluyu yakaladım: *.iniSisteminiz için dosya kullanıyorsanız , orada hangi sunucu adının girildiğini kontrol etmek ve bunun web.config bağlantı dizenizdeki ile aynı olduğundan emin olmak isteyebilirsiniz.


0

Aynı sorun burada ve burada listelenen hiçbir cevap işe yaramadı veya çevrimiçi bulabildiğim herhangi bir çözüm. Sorun, Windows 10 yıl dönümü güncellemesinin geliştirici bilgisayarıma uygulandıktan kısa bir süre sonra başladı ve yalnızca eski SQL Server 2005 örneğimi etkiledi. Örneğe Web Uygulamalarım aracılığıyla veya Sql Management Studio'yu kullanarak bağlanamadım.

Değeri ne olursa olsun, bunu benim için çözen şey buydu:

  1. SQL Server Configuration Manager'ı açın (çalıştırdığınız SQL Server sürümüne bağlı olarak):

    • C: \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc VEYA
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc VEYA
    • vb
  2. SQL Server Hizmetlerini seçin

  3. Sorunlu hizmeti bulun ve Özellikleri görüntüleyin

    • örneğin benim durumumda SQL Server (SQL2005)
  4. Oturum Aç sekmesinde, "Yerleşik hesabı" "Ağ Hizmeti" olarak değiştirin

Neredeyse bu rasgele çözümün söylediği şey: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection -sunucuyla-başarıyla-kuruldu-ama-sonra-oturum-öncesi-el sıkışması-sırasında-bir-hata oluştu-12405.html

Hiçbir sebep yokken Ağ Hizmetini seçtim. Mine, Yerel Sistemi kullanmak için zaten yapılandırılmıştı. Bu güvenlik benim için önemli değil çünkü yalnızca yerel geliştirme makinemde sorunluydu, yalnızca yerel olarak erişiliyordu. Bunun neden işe yaradığını söyleyemem ama işe yaradı.


0

Benim durumumda, uzak bir veritabanına erişmek istediğimde hata alıyordum. Ancak SQL Server Browser hizmetini başlatarak çözdüm.

görüntü açıklamasını buraya girin


0

Eski bir SQL Sunucusuna bağlanıyorsanız:

System.Data'dan geçiş yapın. SqlClient.SqlConnection to System.Data. OleDb.OleDbConnection

Bir OleDb bağlantı dizesi kullanın:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.