Se estableció correctamente una conexión con el servidor, pero luego se produjo un error durante el protocolo de enlace previo al inicio de sesión

111

Recibo el siguiente error cuando intento conectar la base de datos de producción desde el entorno local.

Pude conectar Production DB antes, pero de repente aparece el siguiente error, ¿alguna idea?

Se estableció correctamente una conexión con el servidor, pero luego se produjo un error durante el protocolo de enlace previo al inicio de sesión. (proveedor: Proveedor de TCP, error: 0: el identificador no es válido).

Estaba intentando ejecutar el sitio web asp.net en una PC local, que tiene una cadena de conexión de la base de datos de producción, a continuación se muestra el seguimiento de la pila para el error que obtengo en el entorno local.

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

¿Alguna idea de lo que pudo haber salido mal aquí?

Jordon Willis
fuente
¿A qué DBMS se está conectando?
Will A
1
¿Puede conectarse desde la PC local con SSMS? Esta pregunta se haría mejor en serverfault.com
Will A
Sí, puedo conectarme. Lo que observo fue que de repente comienza a funcionar.
Jordon Willis
2
Creo que esta pregunta pertenece a StackOverflow (y no a ServerFault) porque el problema subyacente que causó el error fue Asp.net Cassini en Visual Studio. Detener todas las instancias existentes de Cassini (WebDev.WebServer.exe) y volver a ejecutar la aplicación funcionó para mí.
MikeTeeVee
@ MikeTeeVee Tengo el mismo problema con una sencilla aplicación WinForm. Ningún cassini involucrado.
Sylvain Rodrigue

Respuestas:

154

Solución

1) Limpie su solución VS.Net

2) Proyecto de reconstrucción.

3) Restablecer IIS

4) Ejecute el proyecto nuevamente.

Básicamente, eso resolvió mi problema, pero en mi caso no recibía este error y, de repente, mi entorno local comienza a darme el error anterior, por lo que puede ser que ese truco funcione para mí.

Jordon Willis
fuente
25
Tuve un problema similar (localhost también). El punto clave parece haber sido el punto 3. Todo lo que parecía tener que hacer era matar la instancia de VS WebServer (Cassini) y reconstruir y presionar F5. Eso me resolvió. Gracias por tu respuesta. (Debería considerar marcarlo como la solución)
Amadiere
1
Esta solución también funcionó para mí. Yo también estaba usando VS Web Server (Cassini) en lugar de IIS al igual que Amadiere.
Simon Lomax
7
Esto suena más a una solución alternativa que a una solución. Me pregunto si el verdadero problema tiene que ver con la agrupación de conexiones.
jrummell
2
Tuve esto de nuevo hoy. Todo lo que necesita hacer es ejecutar iisreset desde un símbolo del sistema de administración.
Ian Kemp
6
Esta respuesta podría mejorarse proporcionando algunas posibles direcciones para el análisis de la causa raíz. Las soluciones alternativas tienen valor, pero es más útil saber por qué ocurre esto y por qué funciona la solución alternativa.
laindir
15

- Guarde su trabajo,
- Cierre Visual Studio, luego
- Vuelva a abrir su proyecto

Siempre funciona para mi.

Dumisani
fuente
29
Esto también funcionó para mí, pero a menudo encuentro que hacer un café mientras se reinicia hace toda la diferencia.
ED-209
Tuve un problema similar, pero con un servidor de nodo. Estaba ejecutando un servidor de nodo en ubuntu VM guest y accedía desde Windows 10 VM host. Pausar y guardar la máquina virtual, luego restablecer el host de Windows 10, luego abrir la copia de seguridad de la máquina virtual funcionó, así que asumí que era un problema con Windows, no con el servidor local. Pero luego, acabo de intentar restablecer el servidor de nodo local, y eso también lo solucionó ... así que quién sabe, ja
RyanQuey
10

Ejecutar el siguiente comando funcionó para mí:

netsh Winsock reset

Visto en https://serverfault.com/a/487139/250527

Ricardo Stuven
fuente
2
Esto resolvió mi problema. Le debo el almuerzo al tipo de la cadena porque lo había tirado debajo del autobús.
Greg
Para su información, esto resetnecesita un reinicio del sistema.
wqw
9

Experimenté este error al ejecutar algunos procesos que consumen mucha memoria. Cuando el sistema comenzó a quedarse sin memoria, comencé a notar este tipo de error. Tuve que cambiar el algoritmo para hacer un mejor uso de la RAM.

Cabe señalar que, si bien algunos subprocesos arrojaron esta excepción, otros arrojaron:

System.Data.SqlClient.SqlException (0x80131904): tiempo de espera de conexión caducado. El período de tiempo de espera transcurrió mientras se intentaba consumir el reconocimiento del protocolo de enlace previo al inicio de sesión. Esto podría deberse a que falló el protocolo de enlace previo al inicio de sesión o que el servidor no pudo responder a tiempo. El tiempo que pasó intentando conectarse a este servidor fue - inicialización [Pre-Login] = 43606; apretón de manos = 560; ---> System.ComponentModel.Win32Exception (0x80004005): la operación de espera agotó el tiempo de espera

Ambos problemas desaparecieron después de que se cambió el sistema para que pudiera ejecutarse usando menos RAM.

Starnuto di topo
fuente
1
Confirmado. Ejecuté un procesamiento intensivo en SQL Server desde C # usando paralelo.foreach en mi computadora portátil. Mi uso de memoria estaba al máximo. La computadora apenas se pudo usar durante unos 15 minutos antes de que apareciera este error.
TheLegendaryCopyCoder
8

Tuve el mismo problema, estaba almacenando datos de sesión en la base de datos, la cadena de conexión tenía Encrypt = True , lo que supongo que le dijo al cliente sql que se conectara al servidor en modo seguro (SSL), ¡eliminar esto ayudó!

Terry Kernan
fuente
1
Este indicador se agregará a su cadena de conexión si va a utilizar una base de datos SQL de Windows Azure. Estoy bastante seguro de que también se utilizará para otros proveedores de PaaS / IaaS / Server.
Parth Shah
AzureSQL que requiere cifrar blogs.msdn.microsoft.com/buckwoody/2012/03/06/…
Jeson Martajaya
5

Es posible que desee comprobar algunas cosas:

  1. Su servidor de producción permite conexiones remotas. (es posible que alguien haya desactivado esto, especialmente si tiene un DBA)

  2. Verifique su cadena de conexión. A veces, si está utilizando una dirección IP o un nombre de servidor, esto provocará este error. Prueba ambos.

Richard Fantozzi
fuente
4

En mi caso fue:

Persist Security Info=True;

en mi cadena de conexión que necesitaba ser eliminado. Una vez que hice eso, ya no tuve problemas.

delliottg
fuente
4

En mi caso, este error ocurrió con dot net core y Microsoft.Data.SqlClient. La resolución fue agregar ;TrustServerCertificate=trueal final de la cadena de conexión.

gratinierer
fuente
Gracias, me salvaste :)
DiPix
Esto fue todo cuando se usaron certificados autofirmados
Geoff Gunter
3

Como se describe en la respuesta de Ricardo ,

netsh Winsock reset

ha funcionado para mi,

PD: si tiene un administrador de descargas de Internet o programas que cambian su configuración de IP está instalado, luego de ejecutar este comando cuando reinicie su computadora, IDM le pedirá que cambie la configuración, establezca NO en este caso y luego ejecute su aplicación, funcionará correctamente.

Espero que

Vishal Sharma
fuente
3

Tuve un problema similar en el que no pude conectarme a una base de datos y probé las recomendaciones aquí.

Al final del día, esto es lo que funcionó para mí:

Se utilizó la herramienta Administrador de configuración de SQL Server para habilitar los protocolos TCP / IP y / o Canalizaciones con nombre en el equipo cliente de SQL Server.

  1. Haga clic en Inicio, seleccione Todos los programas y haga clic en Administrador de configuración de SQL Server.
  2. Haga clic para expandir Configuración de red de SQL Server y luego haga clic en Protocolos de cliente.
  3. Haga clic con el botón derecho en el protocolo TCP / IP y luego haga clic en Activar.
  4. Haga clic con el botón derecho en el protocolo de canalizaciones con nombre y luego haga clic en Habilitar.
  5. Reinicie el servicio del servidor SQL si se le solicita.

Todavía no estoy seguro de por qué o cuándo se desactivó.

daffyjeje
fuente
2

Para mí, la solución es eliminar los procesos de trabajo zombie IIS express.

por ejemplo, ubíquelo en el Administrador de tareas y finalice la tarea.

ingrese la descripción de la imagen aquí

Daniel de Zwaan
fuente
1

Tuve el mismo problema y no tuve suerte con las soluciones sugeridas. Luego encontré este artículo y vi el comentario de Mirrh sobre un programa llamado Sendori que bloquea el LSP. No tengo idea de cómo llegó a mi computadora, pero allí estaba y al eliminarlo se solucionó el problema.

Si el artículo no funciona, simplemente revise sus Programas y desinstale Sendori si lo ve.

rickeroye
fuente
1

Reinicié el servicio SQL Server (Sharepoint) y resolvió el problema.

usuario2087459
fuente
1

Estaba teniendo exactamente el mismo problema sin cambios en el código base o los servidores. Resultó que el servidor de base de datos se estaba ejecutando al 100% de la CPU y SQL Server no tenía tiempo de CPU, lo que provocó el tiempo de espera.

TheLukeMcCarthy
fuente
1

Probé la mayor parte de lo anterior y nada funcionó. Luego apagó el software VPN (NordVPN) y todo estuvo bien.

Paul Evans
fuente
1

Probé muchas soluciones el mes pasado, ninguna ha funcionado. El problema es que la base de datos de producción está dentro de una VPN y, de alguna manera, el proveedor de ISP cree que la conexión HTTP no es segura. Sin embargo, pude conectarme a la misma base de datos de producción desde SSMS (usa TCP).

Mi solución: usar el teléfono móvil como un punto de acceso y usar datos móviles en lugar de mi oficina / Wi-Fi doméstico.

mihai_omega
fuente
1
Lo mismo en mi caso. ¡Gracias!
David Lo
0

Tenía el mismo problema, la razón era la biblioteca BCrypt.Net, compilada usando el marco .NET 2.0, mientras que todo el proyecto, que lo usaba, se compilaba con .NET 4.0. Si los síntomas son los mismos, intente descargar el código fuente de BCrypt y reconstruirlo en la configuración de lanzamiento dentro de .NET 4.0. Después de haberlo hecho, el "apretón de manos previo al inicio de sesión" funcionó bien. Espero que ayude a alguien.

Eadel
fuente
0

Experimenté este error e hice todas las sugerencias de ustedes aquí, pero ninguna tuvo ningún efecto sobre mi error.

Atrapé al culpable: si está utilizando un *.iniarchivo para su sistema, es posible que desee verificar qué nombre de servidor se ingresó allí y asegurarse de que sea el mismo que el de su cadena de conexión web.config.

usuario3619399
fuente
0

El mismo problema aquí y ninguna de las respuestas enumeradas aquí funcionó, ni ninguna solución que pudiera encontrar en línea. El problema comenzó poco después de que se aplicara la actualización de aniversario de Windows 10 en mi PC de desarrollo y solo afectó a mi antigua instancia de SQL Server 2005. No pude conectarme a la instancia a través de mis aplicaciones web o incluso usando Sql Management Studio.

Por lo que vale, esto es lo que lo resolvió para mí:

  1. Abra el Administrador de configuración de SQL Server (según la versión de SQL Server que esté ejecutando):

    • C: \ Windows \ SysWOW64 \ SQLServerManager.msc
    • C: \ Windows \ SysWOW64 \ SQLServerManager10.msc O
    • C: \ Windows \ SysWOW64 \ SQLServerManager12.msc O
    • etc
  2. Seleccione Servicios de SQL Server

  3. Localice el servicio con problemas y vea Propiedades

    • por ejemplo, SQL Server (SQL2005) en mi caso
  4. En la pestaña Iniciar sesión, cambie la "Cuenta integrada" a "Servicio de red"

Que es casi lo que dijo esta solución aleatoria: http://www.kutayzorlu.com/operating-systems/linux-unix-redhat-debian-ubuntu-opensuse-centos/general-server-administrating/error-fixed-a-connection -se-estableció-exitosamente-con-el-servidor-pero-luego-ocurrió-un-error-durante-el-apretón-de-manos-previo-inicio-de-sesión-12405.html

Elegí el servicio de red sin ningún motivo. El mío ya estaba configurado para usar el sistema local. Esta seguridad no me importa, ya que solo era problemática en mi máquina de desarrollo local, solo se accedía localmente. No puedo aconsejar por qué funciona esto, pero lo hizo.

Arkiliknam
fuente
0

En mi caso, recibía el error cuando quería acceder a una base de datos remota. Sin embargo, lo resolví iniciando el servicio del navegador SQL Server.

ingrese la descripción de la imagen aquí

Ifesinachi Bryan
fuente
0

Si se está conectando a un servidor SQL antiguo:

Cambiar de System.Data. SqlClient.SqlConnection a System.Data. OleDb.OleDbConnection

Utilice una cadena de conexión 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>
Domingo Isaia
fuente