Sitecore

Error: Se produjo un error tras iniciar sesión en Sitecore

En la publicación de hoy voy a compartir un problema que enfrenté hace un tiempo durante un proceso de inicio de sesión Error: An error occurred after logging in Sitecore

La gente cree que los profesionales de TI son intrépidos, pero nadie conoce la pesadilla que podríamos tener al escuchar las palabras Blue Screen of Death (BSOD). Y desde que empecé a trabajar con Sitecore, la Yellow Screen of Death (YSoD) también causa daños!

No hace falta decir que todos los fallos dan miedo, especialmente si no te ayudan con una dirección para determinar la causa.

Hace algunas semanas, en un entorno Sitecore 9.1, después de iniciar sesión en Sitecore Identity Server, recibí el siguiente mensaje de error

Error: An error occurred

Definitivamente no es útil, ¿verdad?

error al iniciar sesión en Sitecore blog vinicius deschamps

Los registros en Sitecore

20892 10:35:42 ERROR String o datos binarios serían truncados.
La instrucción ha sido terminada.
Excepción: System.Exception
Mensaje: String o datos binarios serían truncados.
La instrucción ha sido terminada.
Origen: Sitecore.Kernel
en Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteNonQuery()
en Sitecore.Data.DataProviders.Sql.SqlDataApi.<>c__DisplayClass33_0.b__0()
en Sitecore.Data.DataProviders.NullRetryer.Execute[T](Func`1 action, Action recover)
en Sitecore.Data.Properties.SqlPropertyStore.SetStringValueCore(String prefixedName, String value)
en Sitecore.Data.Properties.PropertyStore.SetStringValue(String name, String value)
en Sitecore.Web.Authentication.DefaultTicketManager.CreateTicket(String userName, String startUrl, Boolean persist)
en Sitecore.Owin.Authentication.Pipelines.CookieAuthentication.SignedIn.CreateTicket.Process(SignedInArgs args)
en (Object , Object )
en Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
en Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
en Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
en Sitecore.Owin.Authentication.Security.Cookies.DefaultCookieAuthenticationProvider.ResponseSignedIn(CookieResponseSignedInContext context)
en Microsoft.Owin.Security.Cookies.CookieAuthenticationHandler.d__f.MoveNext()
— Fin de la traza desde la ubicación anterior donde se lanzó la excepción —

Excepción Anidada

Excepción: System.Data.DataException
Mensaje: Error ejecutando el comando SQL: INSERT INTO [Properties] ( [Key], [Value] ) VALUES ( @name, @value )

Excepción anidada

Excepción: System.Data.SqlClient.SqlException
Mensaje: String o datos binarios serían truncados.
La instrucción ha sido terminada.
Fuente: .Net SqlClient Data Provider
en System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

El problema

Sitecore tiene un agente que limpia automáticamente los tickets de autenticación caducados conocido como Sitecore.Tasks.CleanupAuthenticationTicketsAgent, sin embargo, el agente no logra limpiarlos, por lo que los registros caducados permanecen en la tabla Properties. Un gran número de registros “SC_TICKET” pueden provocar degradación del rendimiento del proceso de inicio de sesión.

Y como observamos, también provoca el error inútil de ocurrir Error: An error occurred

La solución

Sitecore tiene una KB que proporciona una solución para Sitecore 8.2 Update 6 & Update 7, Sitecore 9 Initial Release, Update 1 y Update 2.

Importante: solo instales KBs que coincidan con tu versión de Sitecore, si tienes dudas al respecto, ponte en contacto con el Soporte de Sitecore

Dado que la Initial Release de Sitecore 9.1 no estaba listada, he pedido una solución a Sitecore y no fue posible, ya que mi instalación ya tiene hotfixes para un par de otros errores y no cubrirá todos si queremos corregir el problema descrito en este post.

Bueno, si ese no es tu caso, por favor consulta al Soporte de Sitecore la referencia siguiente #227832

La solución temporal

Para quienes enfrentan lo mismo y no pudieron obtener una solución permanente, hay una solución temporal para el problema

Importante: todos los editores serán cerrados sesión una vez que termine de procesarse la consulta

USE [tu_nombre_de_base_de_datos_core]; DELETE FROM [dbo].[Properties] WHERE [dbo].[Properties].[Key] like '%SC_TICKET%'

¡Y eso es todo!

Espero que les haya gustado, y nos vemos en mi próximo post.

Sitecore
Error: Se produjo un error tras iniciar sesión en Sitecore — Vinicius Deschamps