Pregunta

Tenemos varias aplicaciones ASP.NET que utilizan un mapa del sitio que se llena a través de una aplicación VB.NET del ejemplo SqlSiteMapProvider encuentra en Código traviesa . Se compila a un archivo DLL, a continuación, se instala y se hace referencia desde el GAC en los servidores y de nuestros vecinos también. Se ha estado trabajando en la producción de bien para unos pocos meses. También debo señalar que estamos utilizando SQL Server 2008

Hoy en día, entramos y dimos cuenta de la producción que no había elementos de menú que se muestran en absoluto en el mapa del sitio en prod para cualquiera de las aplicaciones. El revelador y la garantía de la calidad se veía bien. No hemos hecho ningún maintenence a SQL Server en prod en bastante tiempo, mucho antes de que incluso implementado SQLSiteMapProvider. Nosotros también hemos puesto al día sin ninguna de las aplicaciones web recientemente.

Lo primero que hice fue tomar el web.config prod y la puso a mi web.config en mi IDE y ejecute la aplicación - siendo el mismo tema. Esto se debe descartar un problema de IIS ya que el error se replica en mi máquina así.

Dado que este era un poco urgente, el siguiente que hice fue simplemente insertar un registro ficticio en la tabla de mapa de prod para ver lo que sucedería. Puf, como la magia, los elementos de menú se restauraron y todo estaba bien. He eliminado el elemento de menú maniquí y que synced sin problema.

Este fue un poco de miedo, sin embargo, y estoy tratando de averiguar por qué esto sucedió para que no vuelva a ocurrir en el futuro. Alguien ha experimentado esto antes? Si usted nunca ha utilizado SqlSiteMapProvider - simplemente utiliza SqlDependencyCache cache / ASP.NET para almacenar los elementos de menú, a continuación, si el conjunto de resultados del procedimiento almacenado que devuelve los enlaces cambios, se indica a ASP.NET que esto sucedió y que re-puebla el mapa del sitio / cache ...

Tal vez la conexión entre el servidor web y SQL Server de alguna manera muerto? Y la inserción de un registro hizo 'despertar' y volver a conectar de nuevo? Tal vez hay un valor de tiempo de espera o algún tipo de IsStillConnected () función en algun lugar que necesito para comprobar pageLoad para asegurarse de que la conexión está todavía en el tacto? O tal vez ASP.NET pensó que el procedimiento almacenado regresaba sin valores por alguna razón hasta que insertamos un registro en la tabla? ¿Alguien ha visto este problema antes?

Muchas gracias de antemano por cualquier orientación.

EDIT: todo esto venía de tener un conjunto NOCOUNT ON en mi procedimiento almacenado. ¡TENER CUIDADO! mí esto no es en la documentación de MSDN atornillado en cualquier lugar y en realidad por un tiempo!

¿Fue útil?

Solución 2

Comprobar el estado de edición;)

todo esto venía de tener un conjunto NOCOUNT ON en mi procedimiento almacenado. ¡TENER CUIDADO! Esto no es en la documentación de MSDN en cualquier lugar y realmente me atornillado por un tiempo!

Otros consejos

SqlDependency no es exactamente una fuente inagotable de estabilidad. Aquí están algunos artículos que tal vez pueden arrojar algo de luz:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top