Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

733
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!