5

tl; dr:Menú desde MvcSiteMapProvider veces no puede llegar a sí mismo después de una aplicación viene de nuevo en línea, a pesar de que se ejecuta el código y el menú rinde después de una actualización de la página.MvcSiteMapProvider no está listo en la página de procesamiento, ¿problema de caché?

estoy usando el MvcSiteMapProvider en un proyecto ASP.NET MVC 3, y en ocasiones después de cambiar la aplicación de offline a online (mediante la inserción de un archivo de un App_Offline.htm en la raíz del servidor y retirarlo) en el menú, no quede nada hasta que la página se actualice.

Estoy utilizando un DynamicNodeProvider personalizado para consultar los elementos del menú de una base de datos, y luego mostrar el menú. Durante la depuración, puedo ver que este código se está ejecutando antes de que se cargue la página, pero no se muestra ningún menú en la página. Tengo el caché establecido en varias horas y estoy usando una clave de caché personalizada para permitir la invalidación después de ciertas acciones.

Lamentablemente no puedo obtener este error para reproducir de forma coherente. I puede pero haz que reproduzca con más frecuencia si agrego un reposo en la parte superior del DynamicNodeProvider - fallará aproximadamente el 60-70% del tiempo con una espera de más de 30 segundos. Mi mejor estimación hasta ahora es que tiene que ver con el mecanismo de almacenamiento en caché porque la configuración de la duración de mi caché en 0 parece para que no haya ningún problema, y ​​el menú siempre aparece. Sin embargo, es difícil decirlo con certeza, ya que es difícil precisar el problema. Dejarlo en 0 no sería una solución aceptable debido a la resistencia al rendimiento.

¿Cuál podría ser la causa raíz de este problema? ¿Alguien ha visto este comportamiento antes o tiene una solución alternativa?

Respuesta

2

MvcSiteMapProvider es mordido por el modelo de subprocesamiento de ASP.NET SiteMapProvider de vez en cuando, especialmente cuando se tienen definiciones de mapa de sitio más grandes. Actualmente no hay solución para este comportamiento, pero estoy planeando hacer una reescritura (y eliminar la dependencia de ASP.NET SiteMapProvider) para hacerlo más estable en condiciones difíciles.

+0

¡Espero ansiosamente la reescritura! – Joshua

+0

Planeando comenzar a principios de 2013. Y por ahora, estoy maldiciendo que no tomé la ruta "zanja la biblioteca subyacente". – maartenba

+0

¿Esto está relacionado con el problema de que a veces el menú representa los nodos incorrectos? – 360Airwalk

1

Se ha lanzado MvcSiteMapProvider v4, y es available on NuGet.

utiliza su propio mecanismo de caché que es a la vez more configurable y more extensible de lo que era anteriormente. Hasta ahora en v4 no ha habido informes de que desaparezcan los menús u otros problemas extraños de primera solicitud.

Cuestiones relacionadas