Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

735
Vistas
Repentino: 'La cadena de certificados fue emitida por una autoridad que no es de confianza en Microsoft.Data.SqlClient' en el proyecto de trabajo

Tengo un sitio web ASP.Net Webforms que se ejecuta en IIS en un servidor Windows. También en este servidor se encuentra el servidor SQL.

Todo ha funcionado bien con el sitio, pero ahora veo problemas con el uso de un DataAdapter para llenar una tabla.

Así que aquí hay un código, tenga en cuenta que es solo un esquema básico del código, ya que el código real contiene información confidencial.

 public List<Summary> Fetch(string Connection, int parameter1, int parameter2, bool parameter3) { List<Summary> collection = new List<Summary>(); using (SqlConnection dbConnection = new SqlConnection(Connection)) { using (SqlCommand dbCommand = dbConnection.CreateCommand()) // Result is complex { dbCommand.CommandType = CommandType.StoredProcedure; // // Code to add parameters and set commandText goes here // using (SqlDataAdapter da = new SqlDataAdapter(dbCommand)) { DataTable table = new DataTable(); DataRow row; try { da.Fill(table); } catch(Exception ex) { // Log error } for (int i = 0; i < table.Rows.Count; i++) { row = table.Rows[i]; Summary data = Populate(row); collection.Add(data); } } } } return collection; }

Lo anterior está en una biblioteca y se llama así en el sitio de Web Forms.

 var Summaries = MyLibrary.Fetch(ConnectionString, 1, 111, false);

Así que como digo, todo estaba funcionando bien. Ahora, de repente, lo anterior ha dejado de funcionar y los Summaries siempre están vacíos.

Para investigar probé lo siguiente.

Creé una prueba usando xUnit con los mismos parámetros que usa el sitio web. Estos fueron capturados durante la depuración para garantizar que coincidieran. El resultado devolvió 1 artículo.

Luego ejecuté el procedimiento almacenado en SQL Management Studio y coincidió con la prueba xUnit con 1 elemento devuelto.

Luego revisé SQL Profiler y aquí es donde las cosas parecían un poco extrañas. No se registraba nada en el seguimiento cuando los formularios web llamaban a la biblioteca.

Entonces, tanto el sitio web como la prueba xUnit estaban usando la misma biblioteca, pasando los mismos parámetros y, sin embargo, uno funcionó y el otro no ... muy extraño.

Como último recurso, agregué el proyecto de la biblioteca al proyecto de formularios web y procedí a depurarlo... luego encontré el error.

 da.Fill(table);

La línea anterior generó la siguiente excepción.

Excepción lanzada: 'Microsoft.Data.SqlClient.SqlException' en Microsoft.Data.SqlClient.dll Se estableció correctamente una conexión con el servidor, pero luego ocurrió un error durante el proceso de inicio de sesión. (proveedor: Proveedor SSL, error: 0 - La cadena de certificados fue emitida por una autoridad que no es de confianza).

Echando un vistazo aquí en la pila, vi muchas respuestas con Necesito instalar un certificado.

Mi pregunta es, si este es el caso, ¿por qué y por qué ahora? Nada ha cambiado en el código desde que estaba funcionando hasta ahora. El sitio web y el servidor SQL están en el mismo servidor de Windows. Además, ¿por qué la prueba xunit funciona sin ella y el sitio web no cuando estoy depurando en la misma máquina?

Los únicos elementos que ahora he cambiado son la instalación de .Net 6 y el parche del martes resultó en algunas actualizaciones y un reinicio del servidor.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Me encontré con este problema también. Neto 6.0

De repente comenzó a ocurrir cuando actualicé Microsoft.EntityFrameworkCore.SqlServer

DESDE Versión="6.0.0" a Versión="6.0.1"

Agregué Encrypt y TrustServerCertificate a la cadena de conexión.

fuente de datos=(local);Catálogo inicial=XXXXXXX;Trusted_Connection=True;MultipleActiveResultSets=True; Cifrar =Verdadero; TrustServerCertificate =Verdadero

over 4 years ago · Santiago Trujillo Denunciar

0

Microsoft.Data.SqlClient 4.0 usa ENCRYPT=True de forma predeterminada. O coloca un certificado en el servidor (no uno autofirmado) o coloca

TrustServerCertificate=Sí;

en la cadena de conexión.

over 4 years ago · Santiago Trujillo Denunciar

0

De repente tuve el mismo problema cuando actualicé por primera vez Microsoft.Data.SqlClient a 4.xx. Volví a 2.0.1 y el mismo problema estaba presente.

Luego eliminé todas las carpetas "bin" y "obj" para cada proyecto. Y luego ejecutó una "restauración dotnet". Después de eso funcionó como antes.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda